按值对数组和子数组进行排序

时间:2016-09-22 10:56:01

标签: php arrays multidimensional-array usort

我有一个像:

这样的数组
$array = array(
    4 => array(
         'position' => 0
         'children' => array(
         )
    ),
    2 => array(
         'position' => 0
         'children' => array(
            3 => array(
                'position' => 1
            )
            5 => array(
                'position' => 0
            )
         )
    )
)

我需要按键'位置'升序(0向上)对外部数组(2& 4)进行排序,然后对每个内部数组进行排序(' children' ),按各自的立场。

可能有6个主阵列,有6个孩子'要排序的数组。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

如果我理解您对问题的解释,以下代码将适合您:

//sort the outer array
usort($array, function($a, $b) {
    return $a['position'] - $b['position'];
});
//sort childrens
foreach ($array as &$item) {
    usort($item['children'], function($a, $b) {
        return $a['position'] - $b['position'];
    });
}

在任何情况下,usort都是一个原生的php函数,对于描述的情况非常方便。 http://php.net/manual/en/function.usort.php

相关问题