在PHP中,如何基于键对关联数组进行排序

时间:2013-05-23 17:21:36

标签: php arrays sorting

我有一个嵌套的关联数组,如下所示,需要帮助为每个键排序数组,例如'first_name'和'score'。

例如:

Array
(
    [12345] => Array
        (
            [75] => Array
                (
                    [first_name] => Xen
                    [score] => 245
                )
        )

    [9876] => Array
        (
            [75] => Array
                (
                    [first_name] => Shane
                    [score] => 300
                )
        ) 
    [4567] => Array
        (
            [75] => Array
                (
                    [first_name] => Dan
                    [score] => 100
                )
        ) 
)

结果应该按照升序排列数组:

Array
(
    [first_name] => Array
                 (
                   [0] => 4567
                   [1] => 9876
                   [2] => 12345
                 )

    [score] => Array
           (
             [0] => 4567
             [1] => 12345
             [2] => 9876
           )
)

1 个答案:

答案 0 :(得分:1)

ksort是PHP按键排序的功能。因此,要按其键对数组$arr进行排序,请执行以下操作:

ksort($arr);

请注意ksort返回布尔值(成功或失败),因此您不应该$arr = ksort($arr);ksort修改原始数组。

要按键递归地对多维关联数组(例如,关联数组的关联数组)进行排序,请尝试ksort手册页底部的用户提供的函数(我没试过,但是它看起来会很好用):

function deep_ksort(&$arr) {
    ksort($arr);
    foreach ($arr as &$a) {
        if (is_array($a) && !empty($a)) {
            deep_ksort($a);
        }
    }
}