本文介绍了如何在 PHP 中对数组的索引进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在我的系统中排名.我有一个数组 $arr = array(120,26,38,96,22);
.我需要在不改变它们的位置的情况下对索引进行排名.
I need rank in my system. I have an array $arr = array(120,26,38,96,22);
. I need to rank the index inside without changing their position.
我需要的输出类似于:
120 是 1 级,26 是 4 级,38 是 3 级,96 是 2 级,22 是 5 级
我试过了,但都排在第 1 位:
I've tried this, but all ranked as rank 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>';
}
?>
而且我还需要数组长度是动态的.
And also I need the array length to be dynamic.
推荐答案
这是一种方法:
$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
并反向排序,使键为 rank -1 - 循环原始数组并在
$rank
中搜索该值,返回键(等级) - 加 1,因为键从 0 开始
- Copy the original array as
$rank
and sort in reverse so the keys will be the rank -1 - Loop the original array and search for that value in
$rank
returning the key (rank) - Add 1 since keys start at 0
或者其他可能:
$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
并反向排序,使键为 rank -1 - 翻转
$rank
数组以获取值作为键并将排名作为值 - 循环原始数组并使用该值作为
$rank
键获得排名 - 加 1,因为键从 0 开始
- Copy the original array as
$rank
and sort in reverse so the keys will be the rank -1 - Flip the
$rank
array to get values as keys and rank as values - Loop the original array and use the value as the
$rank
key to get the rank - Add 1 since keys start at 0
这篇关于如何在 PHP 中对数组的索引进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!