在PHP中排序2D数组

时间:2010-12-07 19:39:02

标签: php sorting multidimensional-array

我有一个如下所示的数组:

Array
(

[90] => Array
    (
        [1056] => 44.91
        [1055] => 53.56
        [1054] => 108.88
        [1053] => 23.28

    ), 
[63] => Array
    (
        [1056] => 44.44
        [1055] => 53.16
        [1054] => 108.05

    ), 
[21] => Array
    (
        [1056] => 42.83
        [1055] => 51.36
        [1054] => 108.53
    )
);

两个键([x]和[y])都是指我数据库中的ID,因此需要保持原样。 [x]的顺序无关紧要,但我需要按[y]的值对每个数组进行排序。

修改 我试过这个循环,但它似乎不起作用:

foreach($distance as $key=>$value) {
    asort($value,SORT_NUMERIC);
}

4 个答案:

答案 0 :(得分:4)

喜欢这个吗?

array_walk($array, 'asort');

答案 1 :(得分:3)

使用ksort(或uksort)按键对数组进行排序。

更新:使用asort(或uasort)按值排序,保留密钥。

更新2:试试这个

foreach($distance as &$value) {
    asort($value,SORT_NUMERIC);
}

答案 2 :(得分:2)

使用asort()按值排序。它维护索引关联。

对于循环,您需要通过引用传递$value,因此您需要使用&$value

答案 3 :(得分:0)

 array_multisort($arrindex1, SORT_DESC, $arrindex2, SORT_DESC, $array);