2012-03-26 48 views
0

我有一個數組,看起來像這樣(樣品):uksort由多個數組元素

Array 
(
    [1600] => Array 
     (
      [country] => Canada 
      [memTypeID] => 10 
     ) 

    [1601] => Array 
     (
      [country] => United States 
      [memTypeID] => 7 
     ) 

    [1602] => Array 
     (
      [country] => Canada 
      [memTypeID] => 9 
     ) 
) 

我需要按國家排序,然後memTypeID,同時保留陣列鍵(PHP)。我相信我需要使用uksort,因爲usort會重寫數組鍵。我知道如何在一個數組元素上創建一個簡單的比較函數,但在如何處理兩個數組元素時會感到不知所措。

結果數組應該是:

Array 
(
    [1602] => Array 
     (
      [country] => Canada 
      [memTypeID] => 9 
     ) 
    [1600] => Array 
     (
      [country] => Canada 
      [memTypeID] => 10 
     ) 

    [1601] => Array 
     (
      [country] => United States 
      [memTypeID] => 7 
     ) 


) 

回答

1
function cmp($a, $b) { 
    if(strcmp($a['country'],$b['country']) != 0) { 
     return $a['country'] > $b['country'] ? 1 : -1; 
    } 
    return $a['memTypeID'] > $b['memTypeID'] ? 1 : -1; 
} 

uasort($a, "cmp"); 
+0

與usort正確排序,但不保留數組鍵。如果我將uksort換成usort,則排序會丟失。 – lcdservices 2012-03-26 18:06:51

+0

固定,再次檢查,使用'uasort' – safarov 2012-03-26 18:11:04

+0

謝謝 - 工作很好 – lcdservices 2012-03-26 21:20:51