递归排序数组|多维数组排序

时间:2018-02-01 03:48:31

标签: php arrays sorting multidimensional-array php-7.1

我需要使用sort(),但我注意到它没有对多维数组进行排序。

我创建了这个函数,但发现它只适用于二维数组。我需要sort()所有嵌套数组。

这就是现在的样子:

public static function sortArray($array) : array {
    sort($array);
    foreach ($array as &$index) {
        if (is_array($index)) {
            sort($index);
        }
    }
    return $array;
}

有没有办法对所有子孙进行检查和排序?

2 个答案:

答案 0 :(得分:0)

效用函数:

// recursively sort array by value
function sortArray($array) {
    foreach($array as $k=>$v) {
        if( !is_array($array[$k]) ) {
            sort($array); // change this function according to needs
        } else {
            $array[$k] = sortArray($array[$k]);
        }
    }
    return $array;
}

使用以下方式调用它:

$arr = [[[[43,32,2],6,2,4],[3,1]],[1]];
print_r(sortArray($arr));

答案 1 :(得分:0)

你最好发布你的阵列。所以我们有一些想法。无论如何,如果这个例子解决你的问题。试试这个: -

Array
(
[item-1] => Array
    (
        [id] => 1
        [title] => Item 1
        [order] => 3
    )

[item-2] => Array
    (
        [id] => 2
        [title] => Item 2
        [order] => 2
    )

[item-3] => Array
    (
        [id] => 3
        [title] => Item 3
        [order] => 1
    )
)
usort($array, 'sort_by_order ');
function sort_by_order ($a, $b)
{
    return $a['order'] - $b['order'];
}
        Or
array_multisort(array_column($array, 'order'),SORT_ASC,$array);

或者此链接可能会对您有所帮助: - https://blog.jachim.be/2009/09/php-msort-multidimensional-array-sort/comment-page-1/ 希望它能帮助你!