2012-09-22 36 views
2

比方說,我們有這樣的如何使用array_multisort()對這樣的多維數組進行排序?

array(2) { 
    [2012]=> 
    array(2) { 
    [0]=> 
    array(2) { 
     ["file"]=> 
     string(3) "aaa" 
     ["mtime"]=> 
     int(1347534106) 
    } 
    [1]=> 
    array(2) { 
     ["file"]=> 
     string(3) "bbb" 
     ["mtime"]=> 
     int(1346293592) 
    } 
    } 
    [2011]=> 
    array(2) { 
    [0]=> 
    array(2) { 
     ["file"]=> 
     string(3) "ccc" 
     ["mtime"]=> 
     int(1316753224) 
    } 
    [1]=> 
    array(2) { 
     ["file"]=> 
     string(3) "ddd" 
     ["mtime"]=> 
     int(1318671936) 
    } 
    } 
} 

我想這個數組進行排序,首先指數下降的一個數組(2012,2011 [,2010,...])和每個子陣列(根陣列的每個值)按mtime值降序排序,但我無法得到如何將array_multisort()應用於此。我可以將第一個鍵傳遞爲'2012',然後它將作爲關聯數組的鍵傳遞,但是如何按mtime排序呢?

回答

0

鑑於你的頂層陣列是$array,你可以這樣做:

krsort($array); 
foreach ($array as &$arr) { 
    uasort($arr, 'cmp'); 
} 

function cmp($a, $b) { 
    return $b['mtime'] - $a['mtime']; 
} 

var_dump($array); //to check results 

應該做你想做的。

更新:更改ksort爲獲取下降年份爲OP想要krsort。

+0

我現在正在測試,想知道爲什麼它顛倒了:) 工作完美,但我只是想知道,array_multisort()是否適用於此示例或不適用?閱讀php.net我確定這個函數是對多維數組進行排序的'唯一適當'。 – tijagi

相關問題