2012-11-16 103 views
22
array(10) { 
[1019]=> array(3) { ["quantity"]=> int(0) ["revenue"]=> int(0) ["seller"]=> string(5) "Lenny" } 
[1018]=> array(3) { ["quantity"]=> int(5) ["revenue"]=> int(121) ["seller"]=> string(5) "Lenny" } 
[1017]=> array(3) { ["quantity"]=> int(2) ["revenue"]=> int(400) ["seller"]=> string(6) "Anette" } 
[1016]=> array(3) { ["quantity"]=> int(25) ["revenue"]=> int(200) ["seller"]=> string(6) "Samuel" } 
[1015]=> array(3) { ["quantity"]=> int(1) ["revenue"]=> int(300) ["seller"]=> string(6) "Samuel" } 
[1014]=> array(3) { ["quantity"]=> string(2) "41" ["revenue"]=> string(5) "18409" ["seller"]=> string(6) "Samuel" } 
} 

我正在使用上面的數組。這個多維數組被稱爲$stats用PHP排序多維數組時保留數組索引鍵

我想按數量排序這個數組。

爲了使multidim數組具有它的第一個數組1016,然後是1018,1017等等。

   function compare($x, $y) { 
        if ($x['quantity'] == $y['quantity']) 
        return 0; 
        else if ($x['quantity'] > $y['quantity']) 
        return -1; 
        else 
        return 1; 
       } 
       usort($stats, 'compare'); 

這工作得很好:

我已經做到了這一點!

但問題是頭部陣列索引(ID,1019,1018,1017等)在排序後會消失。我想保留數組索引。

我該怎麼做?

回答

69

我想你需要的是uasort -

FROM PHP DOC

排序與用戶自定義的比較功能和保持索引關係

數組實例

uasort($stats, 'compare'); 
+0

像PHP這樣的便利功能 – userlond

+0

可愛的功能。 –