2012-09-12 25 views
2

這是我的二維數組:保持陣列鍵,在排序二維數組

$a = array(
    '6' => array(10, 5), 
    '5' => array(20, 7), 
    '40' => array(15, 9) 
); 

我可以array_multisort簡單地對它進行排序:

foreach ($a as $k => $r) { 
    $keys[$k] = $r[1]; 
} 
array_multisort($keys, SORT_DESC, $a); 

,但它清除鍵( '6', '5' ,'40'):

Array 
(
    [0] => Array 
     (
      [0] => 15 
      [1] => 9 
     ) 

    [1] => Array 
     (
      [0] => 20 
      [1] => 7 
     ) 

    [2] => Array 
     (
      [0] => 10 
      [1] => 5 
     ) 

) 

array_multisort是否有任何參數保持數組鍵?

+0

你想的按鍵排序?像40,6,5 –

+1

@ W.Kristianto:不,我想排序數組。但我想保留鍵也不想用數組數字鍵替換它們(從0開始) – mrdaliri

回答

7

使用uasort簡單的解決辦法:

uasort($a, function ($a, $b) { return $a[1] - $b[1]; }); 
+1

謝謝。但我該如何改變排序方向? – mrdaliri

+2

切換'$ a'和'$ b'參數。 – deceze