2012-03-26 56 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