Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按值对数组和子数组排序_Php_Arrays_Multidimensional Array_Usort - Fatal编程技术网

Php 按值对数组和子数组排序

Php 按值对数组和子数组排序,php,arrays,multidimensional-array,usort,Php,Arrays,Multidimensional Array,Usort,我有这样一个数组: $array = array( 4 => array( 'position' => 0 'children' => array( ) ), 2 => array( 'position' => 0 'children' => array( 3 => array( 'po

我有这样一个数组:

$array = array(
    4 => array(
         'position' => 0
         'children' => array(
         )
    ),
    2 => array(
         'position' => 0
         'children' => array(
            3 => array(
                'position' => 1
            )
            5 => array(
                'position' => 0
            )
         )
    )
)
我需要按“位置”键对外部数组(2和4)进行升序(向上0),然后按它们各自的位置对这些(“子项”)的每个内部数组进行排序

可能有6个主数组,需要排序6个“子”数组


执行此操作的最佳方法是什么?

如果我正确理解您对问题的解释,以下代码将适用于您:

//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函数,对于所描述的情况来说非常方便

如果我正确理解您对问题的解释,以下代码将适用于您:

//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函数,对于所描述的情况来说非常方便

看,我确实试过了。我没有通过推荐,这可能是我的问题吗?我已经更改了这个,所以我不需要它。是的,您需要通过引用传递子数组才能更改它。请参阅我已经尝试过了。我没有通过推荐,这可能是我的问题吗?我已经更改了它,所以我不需要它。是的,您需要通过引用传递子数组才能更改它