PHP获取多维数组中值的排名 [英] PHP Get Ranks For Values In Multidimensional Array
本文介绍了PHP获取多维数组中值的排名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的数组结构如下-
Array
(
[0] => Array
(
[points] => 10
[details] => Array
(
[name] => Team A
[rank] =>
)
)
[1] => Array
(
[points] => 10
[details] => Array
(
[name] => Team B
[rank] =>
)
)
[2] => Array
(
[points] => 8
[details] => Array
(
[name] => Team C
[rank] =>
)
)
[3] => Array
(
[points] => 6
[details] => Array
(
[name] => Team D
[rank] =>
)
)
)
现在我希望结果数组为-
Now I want result array to be -
Array
(
[0] => Array
(
[points] => 10
[details] => Array
(
[name] => Team A
[rank] => 1
)
)
[1] => Array
(
[points] => 10
[details] => Array
(
[name] => Team B
[rank] => 1
)
)
[2] => Array
(
[points] => 8
[details] => Array
(
[name] => Team C
[rank] => 2
)
)
[3] => Array
(
[points] => 6
[details] => Array
(
[name] => Team D
[rank] => 3
)
)
)
如何获得此输出?我尝试遍历数组中的每个元素并比较点,但没有发现真正的效果。任何帮助将不胜感激。
How can I achieve this output ? I tried looping through each element in array and comparing points, but I didn't find that really efficeint. Any help would be appreciated.
推荐答案
有点蛮力,但应该可以。
A bit bruteforce but it should work.
$array = array(
array(
"points" => 10,
"details" => array(
"name" => "Team A",
"rank" => ""
)
),
array(
"points" => 11,
"details" => array(
"name" => "Team B",
"rank" => ""
)
),
array(
"points" => 10,
"details" => array(
"name" => "Team A",
"rank" => ""
)
),
array(
"points" => 11,
"details" => array(
"name" => "Team B",
"rank" => ""
)
)
);
$points = array();
foreach($array as $key => $arr){
$points[] = $arr['points'];
}
asort($points);
foreach($points as $pkey => $point){
foreach($array as $akey => $arr){
if($point == $arr['points']){
$array[$akey]['details']['rank'] = $pkey+1;
}
}
}
var_dump($array);
这篇关于PHP获取多维数组中值的排名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文