php 中排名数组中的错误

Bugs in ranking array in php

我需要一个排名系统,我有这个。

<?php
$arr=array(10,11,4,2,10,3);
$rank = $arr;
rsort($rank);
foreach($arr as $sort) {                            
     echo $sort.' is ranking '.(array_search($sort, $rank) + 1).'<br>';
}
?>

我得到的结果是

10 is ranking 2
11 is ranking 1
4 is ranking 4
2 is ranking 6
10 is ranking 2
3 is ranking 5

问题是,当我有 2 个具有相同值的条目时,它跳过了下一个排名。我上面得到的结果两次显示“10 排名 2”。但随后它跳到了第 4 位。

我需要它是这样的。

10 is ranking 2
11 is ranking 1
4 is ranking 3
2 is ranking 5
10 is ranking 2
3 is ranking 4

请帮帮我。谢谢。

没错。

因为你10多次,rsort会映射多次。
如果你想按自己的方式做,原始输入不能有多次相同的输入。

使用array_unique你可以解决这个问题,所以你总是有一个独特的输入。

例如

$arr=array(10,11,4,2,10,3);
$rank = array_unique($arr); //This line have I changed
rsort($rank);
foreach($arr as $sort) {                            
     echo $sort.' is ranking '.(array_search($sort, $rank) + 1).'<br>';
}
<?php
$arr=array(10,11,4,2,10,3);
$rank = $arr;
rsort($rank);

foreach($arr as $sort) { 
  if($sort <= 4){
       echo $sort.' is ranking '.(array_search($sort, $rank)).'<br>';
   }else{
      echo $sort.' is ranking '.(array_search($sort, $rank) + 1).'<br>';
   }
}
?>