19th Ave New York, NY 95822, USA
+1 916-875-2235
+1 916-875-2235

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.

Escribe una respuesta