Array Funciones
PHP Manual

usort

(PHP 4, PHP 5)

usortOrdena un array según sus valores usando una función de comparación definida por el usuario

Descripción

bool usort ( array &$array , callback $cmp_function )

Esta función ordenará un array según sus valores usando una función de comparación definida por el usuario. Si el array que se desea ordenar necesita ser ordenado por algún criterio no trivial, debería usar esta función.

Note:

Si dos miembros se comparan como iguales, su orden en el array ordenado es indefinido.

Note: Esta función asigna nuevas clave a los elemenos del array. Eliminará cualquier clave existenteque haya sido asignada, en lugar de reordenar las claves.

Parámetros

array

El array de entrada.

cmp_function

La función de comparación debe devolver un valor de tipo integer menor que, igual, o mayor que cero si el primer argumento se considera, respectivamente, menor que, igual, o mayor que el segundo.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Historial de cambios

Versión Descripción
4.1.0 Se introdujo un nuevo algoritmo de ordenación. La función cmp_function no mantiene el orden original de los elementos comparadados como iguales.

Ejemplos

Example #1 Ejemplo de usort()

<?php
function cmp($a$b)
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(32561);

usort($a"cmp");

foreach (
$a as $clave => $valor) {
    echo 
"$clave$valor\n";
}
?>

El resultado del ejemplo sería:

0: 1
1: 2
2: 3
3: 5
4: 6

Note:

Obviamente, en este caso tan trivial, la función sort() sería más apropiada.

Example #2 Ejemplo de usort() usando un array multidimensional

<?php
function cmp($a$b)
{
    return 
strcmp($a["fruta"], $b["fruta"]);
}

$frutas[0]["fruta"] = "uvas";
$frutas[1]["fruta"] = "limones";
$frutas[2]["fruta"] = "manzanas";

usort($frutas"cmp");

while (list(
$clave$valor) = each($frutas)) {
    echo 
"\$frutas[$clave]: " $valor["fruta"] . "\n";
}
?>

Cuando se ordena un array multidimensional, $a y $b contienen referencias al primer índice del array.

El resultado del ejemplo sería:

$frutas[0]: limones
$frutas[1]: manzanas
$frutas[2]: uvas

Example #3 Ejemplo de usort() usando una función miembro de un objeto

<?php
class ObjPrueba {
    var 
$nombre;

    function 
ObjPrueba($nombre)
    {
        
$this->nombre $nombre;
    }

    
/* Ésta es la función de comparación estática: */
    
static function cmp_obj($a$b)
    {
        
$al strtolower($a->nombre);
        
$bl strtolower($b->nombre);
        if (
$al == $bl) {
            return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

$a[] = new ObjPrueba("c");
$a[] = new ObjPrueba("b");
$a[] = new ObjPrueba("d");

usort($a, array("ObjPrueba""cmp_obj"));

foreach (
$a as $elemento) {
    echo 
$elemento->nombre "\n";
}
?>

El resultado del ejemplo sería:

b
c
d

Ver también


Array Funciones
PHP Manual