2012-11-06 39 views
0

如何在DESC顺序中排列内部数组键?以DESC顺序排列阵列

我可以按照DESB顺序排列11,12,其排列顺序为arsort(),但内部数组保持不变。我试过array_multisort()usort()等,但没有运气。

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

回答

0

你可以试试ksortArsort将不会正确排序您的阵列。

<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> 
+0

感谢。另外,为什么'Arsort'不能正确排序你的数组?任何技术问题? – BentCoder

+0

没有技术问题。您可以查看PHP Doc获取更多详细信息,并尝试@ air4x的代码片段(http://codepad.org/ne2ldv9w),以查看“arsort”的排序不正确。 – enenen

+0

对不起,我没有看到你想按照DESC顺序排序。编辑我的答案。只需用'krsort'改变'ksort'。 – enenen

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