por - Mantener clave de índice de matriz al ordenar una matriz multidimensional con PHP
sort array of array php (1)
Creo que lo que necesitas es uasort
Ordene una matriz con una función de comparación definida por el usuario y mantenga la asociación de índice
Ejemplo
uasort($stats, ''compare'');
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" }
}
Estoy trabajando con la matriz de arriba. Esta matriz multidimensional se llama $stats
.
Me gustaría ordenar esta matriz, por la cantidad.
Para que la matriz multidim tenga su primera matriz 1016, luego 1018, 1017 y así sucesivamente.
Lo he hecho por:
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'');
Lo que funciona bien!
Pero el problema es que el índice de matriz principal (los ID, 1019, 1018, 1017, etc.) desaparece cuando se ordena. Me gustaría mantener los índices de matriz.
¿Cómo puedo hacer esto?