比较子数组时的array_multisort行为

时间:2016-08-22 14:26:59

标签: php

这是array_multisort中的错误,还是可以解释行为?

以下代码

$a = array(
    "aa" => array("2" => "2"),
    "a" => array("1" => "1"),
);
array_multisort($a);
print_r($a);

打印

Array
(
    [aa] => Array
        (
            [2] => 2
        )

    [a] => Array
        (
            [1] => 1
        )

)

如果我更改param $ a的键顺序如下,打印的结果也有不同的顺序

$a = array(
    "a" => array("1" => "1"),
    "aa" => array("2" => "2"),
);

我希望array_multisort的输出在两种情况下都相同吗?

2 个答案:

答案 0 :(得分:0)

对于数组中的数值使用array_multisort($num,SORT_DESC,SORT_NUMERIC);使用sort_numeric进行排序

答案 1 :(得分:-1)

Rizier123发布的评论是正确答案。子数组中的元素数决定了排序顺序。

在问题的示例中使用ksort代替array_multisort将始终产生相同的结果。