Como usar array_multisort en PHP

Muchas veces nos encontramos con que necesitamos ordenar datos extraidos de una consulta SQL o que leimos desde un archivo; ahí es cuando entra en juego la función array_multisort, al principio puede ser un poco confusa pero luego que la usas varias veces se convierte en una gran utilidad.

Además, es tan poderosa casi como el ORDER BY de SQL por lo que en muchas ocasiones podemos optar por ordenar los resultados fuera de la sentencia SQL lo que supondría un aumento en la eficiencia del query.

Bueno, veamos un ejemplo que vale más que mil palabras:

 
 $fila) {
            $animales[$key]  = $fila[1]; // columna de animales
            $colores[$key] = $fila[2]; //columna de colores
        }

//ordenamos ascendente por la columna elegida
array_multisort($animales, SORT_ASC, $datos);
print_r($datos); 
?>

En el ejemplo anterior tenemos el array $datos con la información que queremos ordenar; la idea es poner las columnas que te interesan ordenar en arrays independientes de esta forma puedes ordenar por la columna que quieras o por varias a la vez.

Dentro del foreach ponemos en $animales los valores de la columna de los animales, es decir, «perro», «gato», “liebre” y “oso”; lo mismo hacemos con la columna de los colores.

Luego usamos la función array_multisort  y le pasamos la columna por la que queremos ordenar, si es ascendente o descendente y finalmente el array original donde se guardara el array ordenado.

Ahora tenemos el array $datos ordenado por la columna animales.

Cabe destacar que es posible ordenar por más de una columna a la vez y por diferentes criterios, lo que hace que array_multisort sea una función sumamente flexible, por eso es recomendable leer la documentación oficial para conocer todas las posibilidades que nos ofrece.

Mas información en: www.php.net/array_multisort

Juan Benitez

Fundador de Tecnopedia.net. Licenciado en Informática, desarrollador Web, Android y PHP. Apasionado de las tecnologías y el fútbol. Reparto mis días programando, creando sitios, apps o escribiendo en @Tecnopedianet... y sí, además tengo esposa y una hija ;)

View all posts by Juan Benitez →

3 thoughts on “Como usar array_multisort en PHP

  1. Me lo he tenido que leer 4 veces, pero al final mi lucecita se ha encendido y me ha ayudado cantidad.

    Muchísimas gracias por el post 😉

  2. Un atajo podria ser:

    function array_multisort_by(&$array, $by, $sort = SORT_ASC){
       foreach($array as $key => $fila){
          $tmp[$key] = $fila[$by];
       }
        array_multisort($tmp, $sort, $array);
    }

    (Perdon por los «.»)

Comments are closed.