Blog

Ordenar una matriz en forma personalizada en php
octubre 30, 2012 | en Funciones de php, Php

Ordenar una matriz en forma personalizada en php

En ocasiones es necesario ordenar una matriz siguiendo una regla determinada para lograr un resultado específico.

Para esto es necesario crear una funcion que compare los elementos de la matriz tomados de dos en dos. La función de comparación debe devolver un entero menor, igual o mayor que cero si se considera que el primer argumento debe ser, respectivamente, menor, igual o mayor que el segundo. Luego utilizamos la funcion usort().

Por ejemplo, supongamos que quisieramos ordenar en forma alfabetica una matriz que tenga nombres de paises , pero que el elemento “Otros” debe aparecer en último lugar.

<?php
function ordenar($elem_1, $elem_2){
   if($elem_1 == $elem_2) return 0;

   if($elem_2 == 'Otros') return -1;

   if(($elem_1 > $elem_2) || ($elem_1 == 'Otros')){
       return 1;
   } else {
       return -1;
   }
}
$matriz = array("Uruguay","Paraguay","Otros","Canada","Argentina","Colombia");
usort($matriz, "ordenar");

print_r($matriz);
?>

El resultado sería:

Array
(
[0] => Argentina
[1] => Canada
[2] => Colombia
[3] => Paraguay
[4] => Uruguay
[5] => Otros
)

comments powered by Disqus