阵列排序以desc顺序排序

问题描述 投票:0回答:5

我如何按desc顺序排序内部数组键?

I can sort 11, 12 in DESC order with

arsort()

 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 ) )
    
php arrays
5个回答
0
投票
You can try with

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应该工作

0
投票
foreach ($arr as &$ar) { arsort($ar); }

http://codepad.org/ne2ldv9w

我假设没有简单的功能可以实现这一目标,所以我想出了此代码:

0
投票
arsort($file_list); foreach ($file_list as $key => $inner_array) { krsort($inner_array); $file_list[$key] = $inner_array; } echo '<pre>'; print_r($file_list);

运行以下代码:

0
投票
array_walk($array,'krsort');

                
最简洁的是,在父级上致电

0
投票
,然后在每个子阵列上迭代

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);


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.