usort Ordena un array según sus valores usando una función de comparación definida por el usuario &reftitle.description; boolusort arrayarray callablevalue_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 <function>usort</function> $valor) { echo "$clave: $valor\n"; } ?> ]]> &example.outputs; Obviamente, en este caso tan trivial, la función sort sería más apropiada. Ejemplo de <function>usort</function> usando un array multidimensional ]]> Cuando se ordena un array multidimensional, $a y $b contienen referencias al primer índice del array. &example.outputs; Ejemplo de <function>usort</function> 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 <function>usort</function> usando un <link linkend="functions.anonymous">cierre</link> 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;