【问题标题】:Sorting a Multidimensional Array in PHP在 PHP 中对多维数组进行排序
【发布时间】:2011-03-06 20:58:25
【问题描述】:

我的数组如下所示:

Array
(
[0] => Array
    (
        [0] => 1
        [1] => 6
        [2] => 4
        [3] => 5
    )

[1] => Array
    (
        [0] => 272.05
        [1] => 63.54
        [2] => 544.79
        [3] => 190.62
    )

[2] => Array
    (
        [0] => 2011-03-06 14:08:19
        [1] => 2011-03-06 14:29:04
        [2] => 2011-03-06 14:28:39
        [3] => 2011-03-06 14:29:28
    )

)

我想按 $myArray[1] 排序。我有这个 usort 函数:

function sortAmount($a, $b) { 
    return strnatcmp($a[1], $b[1]); 
}

它是这样称呼的:

usort($myArray, "sortAmount"); 

但是,调用 usort 后数组并没有改变。我希望 $myArray[1] 中的数字按升序排序,并让 $myArray[0] 和 $myArray[2] 中的相应索引随之更改。

【问题讨论】:

    标签: php multidimensional-array usort


    【解决方案1】:

    我想你想要array_multisort:

    array_multisort($a[1], $a[0], $a[2]);
    

    给予

    Array
    (
        [0] => Array
            (
                [0] => 6
                [1] => 5
                [2] => 1
                [3] => 4
            )
    
        [1] => Array
            (
                [0] => 63.54
                [1] => 190.62
                [2] => 272.05
                [3] => 544.79
            )
    
        [2] => Array
            (
                [0] => 2011-03-06 14:29:04
                [1] => 2011-03-06 14:29:28
                [2] => 2011-03-06 14:08:19
                [3] => 2011-03-06 14:28:39
            )
    
    )
    

    除此之外,你为什么用strcmp来比较数字

    【讨论】:

    • 谢谢! array_multisort 是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多