在PHP中对多维数组进行排序

3

我的数组看起来像这样:

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]中相应的索引也随之改变。

1个回答

8

我认为您需要使用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正是我所需要的。 - Jarred

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接