PHP获取多维数组中值的排名 [英] PHP Get Ranks For Values In Multidimensional Array

查看:319
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆