Ordenando un arreglo de objetos en PHP

 Ordenando un arreglo de objetos en PHP

Hay varios algoritmos y código en línea para realizar ordenamiento de arreglos de cualquier tipo, sin embargo PHP cuenta con funciones optimizadas para esta tarea...

Hay varios algoritmos y código en línea para realizar ordenamiento de arreglos de cualquier tipo, sin embargo PHP cuenta con funciones optimizadas para esta tarea...

Publicado 20 Oct 2017 por
Jonnathan Gutierrez
Artículo original publicado en:
El día que aprendí PHP

Recientemente me tocó realizar una función para ordenar un arreglo de elementos en PHP con la particularidad de que cada elemento es un objeto definido. Cada objeto del arreglo representaba un artículo de un catálogo y se debía ordenar el arreglo por la propiedad "precio" de cada objeto, de mayor a menor.

Al principio estuve tentado a repasar el algoritmo básico Quicksort y hacerle alguna modificación para trabajar con arreglos de objetos pero luego recordé que PHP tiene una función bien práctica para esto llamada usort.

bool usort ( array &$array , callable $value_compare_func );

La funcion usort recibe como parámetros un arreglo de cualquier tipoy el nombre de una función personalizada que se encargará de realizar la comparación interna de cada posición del arreglo. Suponiendo que nuestro arreglo se llama "artículos" y cada posición del arreglo es un objeto con una propiedad llamada "precio", podemos ordenar nuestro arreglo de menor a mayor de la siguiente manera:

function compararArticulos($a, $b){
    if ($a->precio == $b->precio){
        return 0;
    }
    return ($a->precio < $b->precio) ? -1 : 1;
}
usort($articulos, "compararArticulos");

Luego de esto ya es más fácil aplicar el ejemplo para ordenar arreglos multidimensionales.