-7

我有一个嵌套关联数组,如下所示,需要帮助为每个键(例如“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
           )
)
4

1 回答 1

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);
        }
    }
}
于 2013-05-23T17:25:41.953 回答