我如何按desc顺序排序内部数组键?
I can sort 11, 12 in DESC order witharsort()
but inner array remains same. I tried
array_multisort()
,
usort()
and others but without luck.
Array
(
[11] => Array
(
[4] => apr11timetable.php
[8] => aug11timetable.php
[6] => jun11timetable.php
[11] => nov11timetable.php
[10] => oct11timetable.php
)
[12] => Array
(
[4] => apr12timetable.php
[8] => aug12timetable.php
[2] => feb12timetable.php
[6] => jun12timetable.php
[10] => oct12timetable.php
)
)
ksort. Arsort
不会正确排序您的数组。
<pre>
<?php
$array = Array(
11 => Array(
4 => 'apr11timetable.php',
8 => 'aug11timetable.php',
6 => 'jun11timetable.php',
11 => 'nov11timetable.php',
10 => 'oct11timetable.php'
),
12 => Array(
4 => 'apr12timetable.php',
8 => 'aug12timetable.php',
2 => 'feb12timetable.php',
6 => 'jun12timetable.php',
10 => 'oct12timetable.php'
)
);
krsort($array, SORT_NUMERIC);
foreach ($array as &$arr) {
krsort($arr, SORT_NUMERIC);
}
print_r($array);
?>
</pre>
this应该工作arsort($file_list);
foreach ($file_list as $key => $inner_array)
{
krsort($inner_array);
$file_list[$key] = $inner_array;
}
echo '<pre>'; print_r($file_list);
运行以下代码:
array_walk($array,'krsort');
最简洁的是,在父级上致电
krsort()
调用。 demo
krsort($array);
array_walk($array, fn(&$v) => krsort($v));
var_export($array);
warning:array_walk($array,'krsort');
由于回调为array_walk()
的第二个参数中的回调中的密钥参数,因此不会提供可靠的结果。 为避免此错误,您必须明确声明回调参数并通过参考进行修改。
可以以相同的方式使用经典循环。 demo
krsort()
尽管不需要递归的结构,而结构仅限于2个级别,但它对于1个或更多级别的阵列将起作用。 demo
krsort($array);
foreach ($array as &$v) {
krsort($v);
}
var_export($array);