usort

usort

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

usort --  Ordena una matriz por sus valores usando una funci贸n de comparaci贸n definida por el usuario

Descripci贸n

bool usort ( array &matriz, callback funcion_comp )

Esta funci贸n ordenar谩 una matriz por sus valores usando una funci贸n de comparaci贸n definida por el usuario. Si la matriz que desea ordenar necesita ser ordenada mediante ciertos criterios especiales, es buena idea usar esta funci贸n.

La funci贸n de comparaci贸n debe devolver un entero menor que, igual, o mayor que cero si el primer argumento es considerado menor, igual, o mayor que el segundo, respectivamente.

Nota: Si dos miembros son comparados como iguales, su orden en la matriz resultante es indefinido. Hasta PHP 4.0.6, las funciones definidas por el usuario manten铆an el orden original para esos elementos, pero con el nuevo algoritmo de ordenamiento introducido en 4.1.0 este ya no es el caso, ya que no hay forma de hacerlo de manera eficiente.

Nota: This function assigns new keys for the elements in array. It will remove any existing keys you may have assigned, rather than just reordering the keys.

Devuelve TRUE si todo se llev贸 a cabo correctamente, FALSE en caso de fallo.

Ejemplo 1. Ejemplo de usort()

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

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

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

El resultado del ejemplo seria:

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

Nota: Obviamente en este ejemplo trivial, la funci贸n sort() ser铆a m谩s apropiada.

Ejemplo 2. Ejemplo de usort() usando una matriz multi-dimensional

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

$frutas[0]["fruta"] = "limones";
$frutas[1]["fruta"] = "bananos";
$frutas[2]["fruta"] = "granadillas";

usort($frutas, "cmp");

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

Cuando se ordena una matriz multi-dimensional, $a y $b contienen referencias al primer 铆ndice de la matriz.

El resultado del ejemplo seria:

$frutas[0]: bananos
$frutas[1]: granadillas
$frutas[2]: limones

Ejemplo 3. Ejemplo de usort() usando una funci贸n miembro de un objeto

<?php
class ObjPrueba {
    var
$nombre;

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

    
/* Esta es la funcion estatica de comparacion: */
    
function cmp_obj($a, $b)
    {
        
$al = strtolower($a->nombre);
        
$bl = strtolower($b->nombre);
        if (
$al == $bl) {
            return
0;
        }
        return (
$al > $bl) ? +1 : -1;
    }
}

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

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

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

El resultado del ejemplo seria:

b
c
d

Vea tambi茅n uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort(), and rsort().