为什么multisort只在数组的第一个深度工作?

时间:2013-04-02 13:22:30

标签: php

我认为函数array_multisort可以对多维数组进行排序,但这段代码不起作用。

代码:

$values = array(0, 2, 1, array(0, 2, 1));
array_multisort($values, SORT_ASC);
var_dump($values);

返回:

array(4) [
   0 => 0
   1 => 1
   2 => 2
   3 => array(3) [
      0 => 0
      1 => 2 //should be 1
      2 => 1 //should be 2
   ]
]

为什么数组中的数组没有排序?感谢

2 个答案:

答案 0 :(得分:3)

你可以尝试

sort_recursive($values);
var_dump($values);

输出

array (size=4)
  0 => int 0
  1 => int 1
  2 => int 2
  3 => 
    array (size=3)
      0 => int 0
      1 => int 1
      2 => int 2

使用的功能

function sort_recursive(&$array) {
    sort($array);
    foreach ( $array as &$v ) {
        is_array($v) and sort_recursive($v);
    }
}

答案 1 :(得分:0)

是因为array()是多维形式的

尝试此链接,了解如何对多维数组click here

进行排序