Ordenar un array multidimensional en PHP
Con la función de php array_multisort podremos ordenar arrays.
En este caso, ordenaremos un array multidimensional según el valor de uno o más campos, y tomaremos como ejemplo el siguiente array:
$data[] = array( "nombre" => "Luis", "apellido" => "González", "edad" => 20 ); $data[] = array( "nombre" => "María", "apellido" => "Ares", "edad" => 30 ); $data[] = array( "nombre" => "José", "apellido" => "González", "edad" => 19 ); $data[] = array( "nombre" => "Amelia", "apellido" => "Montoto", "edad" => 35 ); $data[] = array( "nombre" => "Ana", "apellido" => "Ramírez", "edad" => 30 );
En primer lugar, ordenaremos los datos según el valor apellido, y de forma ascendente:
echo "Ordenado por apellido ascendente:";
foreach ($data as $clave => $fila) {
$orden1[$clave] = $fila['apellido'];
}
array_multisort($orden1, SORT_ASC, $data);
foreach ($data as $clave => $fila) {
echo $fila['apellido']." ".$fila['nombre']." - ". $fila['edad']."
";
}
Lo que nos devolverá:
Ordenado por apellido ascendente: Ares María - 30 González José - 19 González Luis - 20 Montoto Amelia - 35 Ramírez Ana - 30
Ahora vamos a ordenar los datos según los valores edad y apellido, también de forma ascendente:
echo "
Ordenado por edad ascendente y apellido ascendente:";
foreach ($data as $clave => $fila) {
$orden1[$clave] = $fila['edad'];
$orden2[$clave] = $fila['apellido'];
}
array_multisort($orden1, SORT_ASC, $orden2, SORT_ASC, $data);
foreach ($data as $clave => $fila) {
echo $fila['apellido']." ".$fila['nombre']." - ". $fila['edad']."
";
}
Este será el resultado:
Ordenado por edad ascendente y apellido ascendente: González José - 19 González Luis - 20 Ares María - 30 Ramírez Ana - 30 Montoto Amelia - 35
De esta forma podremos ordenar cualquier array multidimensional.


Me salvaste!!!
muchas gracias, funciona perfecto.