我需要在我的系统中排名。我有一个数组$arr = array(120,26,38,96,22);
。我需要对内部索引进行排名而不改变它们的位置。
我需要的输出是这样的:
120 为 1 级,26 为 4 级,38 为 3 级,96 为 2 级,22 为 5 级
我已经尝试过这个,但都排名第一:
<?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>';
}
?>
而且我还需要数组长度是动态的。
这是一种方法:
$arr = array(120,26,38,96,22);
$rank = $arr;
rsort($rank);
foreach($arr as $sort) {
echo $sort. ' is rank ' . (array_search($sort, $rank) + 1) . '</br>';
}
- 将原始数组复制为
$rank
并反向排序,因此键的排名为 -1
- 循环原始数组并在中搜索该值
$rank
返回密钥(等级)
- 由于键从 0 开始所以加 1
或者另一种可能性:
$arr = array(120,26,38,96,22);
$rank = $arr;
rsort($rank);
$rank = array_flip($rank);
foreach($arr as $sort) {
echo $sort . ' is rank '. ($rank[$sort] + 1) . '</br>';
}
- 将原始数组复制为
$rank
并反向排序,因此键的排名为 -1
- 翻转
$rank
数组以获取值作为键并排名作为值
- 循环原始数组并使用该值作为
$rank
获得排名的关键
- 由于键从 0 开始所以加 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)