2012-11-16 8 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" } 
} 

Pracuję z powyższą tablicą. Ta wielowymiarowa tablica nazywa się $stats.Trzymanie klucza indeksu tablicy podczas sortowania wielowymiarowej tablicy za pomocą PHP

Chciałbym posortować tę tablicę według ilości.

Tak, więc tablica wielodomenowa ma pierwszą tablicę 1016, a następnie 1018, 1017 i tak dalej.

Zrobiłem to poprzez:

   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'); 

który działa dobrze!

Ale problem polega na tym, że indeks tablicy (ID, 1019, 1018, 1017 itd.) Znika po odebraniu posortowania. Chciałbym zachować indeksy tablicy.

Jak mogę to zrobić?

Odpowiedz

69

myślę, czego potrzebujesz to uasort -

FROM PHP DOC

Sortuj tablicę z funkcji zdefiniowanej przez użytkownika porównania i zachowując skojarzenia kluczy

Przykład

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

Podobnie jak PHP dla takich przydatnych funkcji. – userlond

+0

Urocza funkcja. –

Powiązane problemy