Tengo la siguiente estructura de matriz:
Array
(
[0] => Array
(
[configuration_id] => 10
[id] => 1
[optionNumber] => 3
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[1] => Array
(
[configuration_id] => 9
[id] => 1
[optionNumber] => 2
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[2] => Array
(
[configuration_id] => 8
[id] => 1
[optionNumber] => 1
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
)
¿Cuál es la mejor manera de ordenar la matriz de forma incremental, según el optionNumber
?
Entonces los resultados se ven así:
Array
(
[0] => Array
(
[configuration_id] => 8
[id] => 1
[optionNumber] => 1
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[1] => Array
(
[configuration_id] => 9
[id] => 1
[optionNumber] => 2
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
[2] => Array
(
[configuration_id] => 10
[id] => 1
[optionNumber] => 3
[optionActive] => 1
[lastUpdated] => 2010-03-17 15:44:12
)
)
< 0
, indica la función de ordenación quea
debería aparecer antesb
. Si es> 0
así,b
debería aparecer antesa
.Utilizar
usort
fuente
Usé ambas soluciones de Kenny TM y AJ Quick y se me ocurrió una función que puede ayudar en este problema en muchos casos, como usar ASC o DESC para ordenar o preservar claves o si tiene objetos como elementos secundarios de una matriz .
Aquí está esta función (funciona para PHP7 y superior debido al operador de nave espacial):
Uso:
Editar
La primera parte se puede reescribir usando
uasort()
y la función será más corta (funciona para PHP7 y superior debido al operador de nave espacial):fuente
>
(mayor que) en lugar de-
(menos) al comparar valores$a
y$b
ya que estaba comparando cadenas. Aunque todavía funciona.Las teclas se eliminan cuando se usa una función como las anteriores. Si las teclas son importantes, la siguiente función las mantendría ... pero los bucles foreach son bastante ineficientes.
Use arsort en lugar de asort si quiere de mayor a menor.
Crédito del código: http://www.firsttube.com/read/sorting-a-multi-dimensional-array-with-php/
fuente
Usando array_multisort (), array_map ()
MANIFESTACIÓN
fuente
PHP 5.3+
fuente