按字母顺序对多维数组进行排序

5
如何按字母顺序对类似这样的数组进行排序:
$allowed = array(
  'pre'    => array(),
  'code'   => array(),
  'a'      => array(
                'href'  => array(),
                'title' => array()
              ),
  'strong' => array(),
  'em'     => array(),
);

// sort($allowed); ?

?


4个回答

9

啊哈!你需要使用uksort();函数。

PHP排序函数的比较(非常有用)。

编辑:原因是,您似乎也想对数组内部进行排序?我认为单独使用ksort不会这样做 - 它直接忽略了原始数组的值。

编辑2:这应该可以工作(虽然使用递归而不是kusort):

function ksort_deep(&$array){
    ksort($array);
    foreach($array as &$value)
        if(is_array($value))
            ksort_deep($value);
}

// example of use:
ksort_deep($allowed);

// see it in action
echo '<pre>'.print_r($allowed,true).'</pre>';

重要提示:如果不使用uksort(),当同一个数组引用到自身时会产生无限循环的副作用。在正常情况下不会发生这种情况,但是万一呢 :)


哪些部分?我没有使用键,只是对值进行排序。 - Christian
1
首先,'is_array()'函数是用来做什么的? - zaf

4

2

2
bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

此处所述。通常“参见”部分非常有帮助。

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