Ранжирование данных по значению от высшего к низшему

У меня проблема с формулой ранжирования. Мой код работает нормально, если у него нет идентичного ГПД или значение оценки было установлено от наивысшего к низшему.

Как проверить одно и то же значение и присвоить одинаковые баллы? Я с этим не согласен, так как если индекс или счет 1-2-3 одинаковы, то формула будет
конфликт, если ситуация на счет 2-3, были одинаковыми.
Как оценка становится ниже, очки также уменьшаются.

Пример 1:

Шаг -1. См. GPA 91 — это самая высокая оценка, умноженная на 1.

Шаг -2. См. GPA 90 — это 2-й высший балл, умноженный на 0,9

Шаг -1. См. Средний балл 88,88,88, 3-й высший балл, умноженный на 0,8.
Общее количество очков должно быть одинаковым.

Пример 2:
Что если 0 => 91,1 => 91 с одинаковыми точками или 1 => 90,2 => 90,3 => 90 были одинаковыми? Я попробовал свой код, но он не получил правильную логику.

Надеюсь, кто-нибудь может мне помочь.

id of scholar
array:3 [▼
0 => 4
1 => 1
2 => 7
3 => 2
4 => 10
5 => 16
6 => 11
7 => 13
8 => 9
]
GPA of scholar
array:3 [▼
0 => 91
1 => 90
2 => 88
3 => 88
4 => 88
5 => 87
6 => 86
7 => 86
8 => 86
]

$scholar_id2 = Scholar::whereIn('scholar_id',$scholar_id)->whereBetween('scholar_GPA', [$ship_gpa_from, $ship_gpa_to])->orderBy('scholar_GPA','DESC')->get();
$id2 = [];
foreach ($scholar_id2 as $id) {
array_push($id2, $id->scholar_id);
}
$count = 0;
foreach ($id2 as $item) {

$ship_id2 = $ship_id;
$crits = Criteria::where('scholar_id','=',$item)->where('ship_id','=',$ship_id2)->get();
$id3 = [];
foreach ($crits as $id) {
array_push($id3, $id->id);
}
foreach ($id3 as $aw) {
$crt = Criteria::find($aw);
if ($count == 0) {
$gpa = $ship_rate_two;
$total_points_two = $gpa * 1;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 1){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.9;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 2){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.8;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 3){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.7;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 4){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.6;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 5){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.5;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 6){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.4;
$crt->gpa = $total_points_two;
$crt->save();
}elseif($count == 7){
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.3;
$crt->gpa = $total_points_two;
$crt->save();
}else{
$gpa = $ship_rate_two;
$total_points_two = $gpa * 0.2;
$crt->gpa = $total_points_two;
$crt->save();
}
}
$count++;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector