usortOrdena un array según sus valores usando una función de comparación definida por el usuario
&reftitle.description;
boolusortarrayarraycallablevalue_compare_func
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.
Si dos miembros se comparan como iguales, su orden relativo en el array ordenado es indefinido.
¬e.no-key-association;
&reftitle.parameters;
array
El array de entrada.
value_compare_func
&return.callbacksort;
&callback.cmp;
La devolución de valores que no sean de tipo integer por parte
de la función de comparación, como float, resultará en una conversión
interna a integer del valor devuelto por la llamada de retorno. Así, valores
como 0.99 y 0.1 serán convertidos al valor de tipo integer 0, lo cual hará que la
comparación de tales valores sea igual.
&reftitle.returnvalues;
&return.success;
&reftitle.examples;
Ejemplo de usort
$valor) {
echo "$clave: $valor\n";
}
?>
]]>
&example.outputs;
Obviamente, en este caso tan trivial, la función sort
sería más apropiada.
Ejemplo de usort usando un array multidimensional
]]>
Cuando se ordena un array multidimensional, $a y
$b contienen referencias al primer índice del array.
&example.outputs;
Ejemplo de usort usando una función miembro de un objeto
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 : -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";
}
?>
]]>
&example.outputs;
Ejemplo de usort usando un cierre
para ordenar un array multidimensional
'z', 'clave_b' => 'c');
$array[1] = array('clave_a' => 'x', 'clave_b' => 'b');
$array[2] = array('clave_a' => 'y', 'clave_b' => 'a');
function build_sorter($clave) {
return function ($a, $b) use ($clave) {
return strnatcmp($a[$clave], $b[$clave]);
};
}
usort($array, build_sorter('clave_b'));
foreach ($array as $item) {
echo $item['clave_a'] . ', ' . $item['clave_b'] . "\n";
}
?>
]]>
&example.outputs;
&reftitle.seealso;
uasort&seealso.array.sorting;