我需要使用sort()
,但我注意到它没有对多维数组进行排序。
我创建了这个函数,但发现它只适用于二维数组。我需要sort()
所有嵌套数组。
这就是现在的样子:
public static function sortArray($array) : array {
sort($array);
foreach ($array as &$index) {
if (is_array($index)) {
sort($index);
}
}
return $array;
}
有没有办法对所有子孙进行检查和排序?
答案 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/ 希望它能帮助你!