PHP (02) Cadenas y matrices (09) Ordenar matrices
Puede ser muy útil el poder ordenar la matrices (ordenar datos de las consultas a una base datos, de un objeto JSON…), para ello hay una serie de funciones muy útiles que nos puede ayudar como sort, asort, ksort… (funciones expuestas en el articulo de funciones de matrices), pero que ahora veremos con un poco de más profundidad, tomando alguna de ellas como ejemplo:
sort / rsort
<?php $escritores = array (0=> "Unamuno", 1=> "Cervantes", 2=> "Machado", 3=> "Becquer"); echo '<p>'; print_r($escritores); echo '</p>'; sort($escritores); echo '<p>'; print_r($escritores); echo '</p>'; ?>
Array
(
[0] => Unamuno
[1] => Cervantes
[2] => Machado
[3] => Becquer
)
Array
(
[0] => Becquer
[1] => Cervantes
[2] => Machado
[3] => Unamuno
)
Como podemos ver una vez que se le aplica la función sort reordena el array de forma alfabética.
Si quisiéramos que nos lo ordenase de forma invertida tan solo deberíamos cambiar la función sort por la función rsort.
asort / arsort
<?php $notas = array ("Jose"=>7.4, "Maria"=>4.2, "Lourdes"=>8.0, "Antonio"=>5.6); echo '<h2>asort</h2><p>'; print_r($notas); echo '</p>'; asort($notas); echo '<p>'; print_r($notas); echo '</p>'; ?>
Array
(
[Jose] => 7.4
[Maria] => 4.2
[Lourdes] => 8
[Antonio] => 5.6
)
Array
(
[Maria] => 4.2
[Antonio] => 5.6
[Jose] => 7.4
[Lourdes] => 8
)
Si queremos que el array se clasifique de forma inversa entonces usaremos arsort.
ksort / krsort
<?php $notas = array ("Jose"=>7.4, "Maria"=>4.2, "Lourdes"=>8.0, "Antonio"=>5.6); echo '<h2>asort</h2><p>'; print_r($notas); echo '</p>'; ksort($notas); echo '<p>'; print_r($notas); echo '</p>'; ?>
Array
(
[Jose] => 7.4
[Maria] => 4.2
[Lourdes] => 8
[Antonio] => 5.6
)
Array
(
[Antonio] => 5.6
[Jose] => 7.4
[Lourdes] => 8
[Maria] => 4.2
)