2012-11-06 78 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');