【发布时间】:2017-01-12 15:44:13
【问题描述】:
我需要在我的系统中排名。我有一个数组$arr = array(120,26,38,96,22);。我需要对里面的索引进行排名而不改变它们的位置。
我需要的输出是这样的:
120是1级,26是4级,38是3级,96是2级,22是5级
我试过这个,但都排在第 1 位:
<?php
$arr = array(120,26,38,96,22);
$rank = 0;
$score=false;
$rows = 0;
foreach($arr as $sort){
$rows++;
if($score != $arr){
$score = $arr;
$rank = $rows;
}echo $sort.' is rank '.$rank.'</br>';
}
?>
而且我还需要动态的数组长度。
【问题讨论】:
-
你有什么样的
rank逻辑? -
我会通过创建 $arr 数组的第二个副本然后对其进行排序,然后为未排序数组中的每个值找到排序数组中的索引 # .. 可能有几十种方法可以做到这一点见php.net/manual/en/ref.array.php
-
如果所有职位都是唯一的,请执行以下操作:
sort($arr); $result = array_map(function($a){return $a+1;},array_flip($arr));