doukong1901 2013-04-07 13:11
浏览 27

PHP获取多维数组中的值的等级

My array structure is as follows -

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.

  • 写回答

2条回答 默认 最新

  • dongpan2788 2013-04-07 13:45
    关注

    How about to create another array and store desired result there

    $array = array(
        array(
            "points" => 10,
            "details" => array(
                "name" => "Team A",
                "rank" => ""
            )
        ),
        array(
            "points" => 11,
            "details" => array(
                "name" => "Team B",
                "rank" => ""
            )
        )
    );
    
    $c = 0; // count identifier
    $n = array(); // create new array
    
    for ($i=0;$i<count($array);$i++){ // loop through each array
        foreach ($array[$i] as $value){ // loop through into sub arrays
            if (is_array($value)){
                $n[$i]['details'] = array(
                    "name" => $value['name'],
                    "rank" => $c
                );
                $c++;
            } else {
                $n[$i]['points'] = $value;
            }
        }
    }
    
    print_r($n);
    

    Output will be:

    Array ( [0] => Array ( [points] => 10 [details] => Array ( [name] => Team A [rank] => 0 ) ) [1] => Array ( [points] => 11 [details] => Array ( [name] => Team B [rank] => 1 ) ) ) 
    
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state