uksort
Classes/Objects
Array Functions
PHP Manual

# usort

(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.

> Note: Si dos miembros son comparados como iguales, su orden en la matriz resultante es indefinido.

> Note: This function assigns new keys to the elements in `array` . It will remove any existing keys that may have been assigned, rather than just reordering the keys.

### Lista de parámetros

`matriz`

  La matriz de entrada.

`funcion_comp`

  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.

### Valores retornados

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

### Registro de cambios

Versión | Descripción
--- | ---
4.1.0 | Se introdujo un nuevo algoritmo. La función `funcion_comp` no mantiene el orden original para los elementos que son comparados como iguales.

### Ejemplos

Example #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

> Note: Obviamente en este ejemplo trivial, la función sort() sería más apropiada.

Example #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

Example #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 función estática de comparación: */
static 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

### Ver también

- uasort() - Ordena una matriz mediante una función de comparación definida por el usuario y mantiene la asociación de índices
- uksort() - Ordena una matriz por claves mediante una función definida por el usuario
- sort() - Ordena una matriz
- asort() - Ordena una matriz y mantiene la asociación de índices
- arsort() - Ordena una matriz en orden inverso y mantiene la asociación de índices
- ksort() - Ordena una matriz por clave
- natsort() - Ordena una matriz usando un algoritmo de "orden natural"
- rsort() - Ordena una matriz en orden inverso

uksort
Classes/Objects
Array Functions
PHP Manual