2016-07-14 3 views
0

Я хочу рассчитать ранг студентов. Условие для расчета ранга: если два или более ученика имеют одинаковые общие оценки, все они получат одинаковый ранг. Затем следующий ранг будет начинаться с Previous_rank + Number of Duplicate records.Расчет ранга в PHP

Вот мой код:

<?php 
$numbers = array(101, 201, 301, 301, 401, 501, 501); 
rsort($numbers); 

$arrlength = count($numbers); 
$rank = 1; 
    $rt=0; 
for($x = 0; $x < $arrlength; $x++) { 
    if ($x==0) { 
     echo $numbers[$x]."- Rank".($rank); 
    } 

    elseif ($numbers[$x] != $numbers[($x-1)]) { 

      echo $numbers[$x]."- Rank".($rank); 
      $rt=$rank; 
      } 
    else{ 
     echo $numbers[$x]."- Rank".($rt); 
      } 
     $rank++; 
    echo "<br>"; 
} 
?> 

Мой Ожидаемый результат подобен

501- Rank1 
501- Rank1 
401- Rank3 
301- Rank4 
301- Rank4 
201- Rank6 
101- Rank7 
+1

Что вы хотите сказать? – mirosval

ответ

1

Этот код делает то, что вы хотите

 <?php 
$numbers = array(101, 201, 301, 301, 401, 401, 401, 501, 501, 501, 501); 
rsort($numbers); 

$arrlength = count($numbers); 
$rank = 1; 
$prev_rank = $rank; 

for($x = 0; $x < $arrlength; $x++) { 

    if ($x==0) { 
     echo $numbers[$x]."- Rank".($rank); 
    } 

    elseif ($numbers[$x] != $numbers[$x-1]) { 
     $rank++; 
     $prev_rank = $rank; 
     echo $numbers[$x]."- Rank".($rank); 
    } 

    else{ 
     $rank++; 
     echo $numbers[$x]."- Rank".($prev_rank); 
    } 

    echo "<br>"; 
} 
?> 

Проблема была с переменной $ к.т., который вы установили в 0, но вместо этого должны были отслеживать предыдущий ранг.

+0

'$ numbers = array (101, 201, 301, 301, 401, 501, 501, 501, 501);' Не работает для этих оценок –

+0

Я отредактировал решение –

+0

Thanks Ronald Rozema .. Его работа сейчас .. –

0
<?php 

    $numbers = array(101, 201, 301, 301, 401, 501, 501,601,701,701,701,801,901); 

    rsort($numbers); 

    $arr = $arr1 = array(); 

    foreach ($numbers as $key => $value) { 
     $arr[$value][] = $value; 
    } 

    $i = $j = 1; 

    foreach ($arr as $key => $value) { 

     foreach ($value as $key1 => $value1) { 
      echo $key."- Rank".$i; 
      echo "<br>"; 
      $j++; 
     } 
    $i = $j; 

    } 
?>