usort Trie un tableau en utilisant une fonction de comparaison &reftitle.description; boolusort arrayarray callablecallback usort va trier le tableau array avec ses valeurs, en utilisant une fonction définie par l'utilisateur. Si un tableau doit être trié avec un critère complexe, il est préférable d'utiliser cette fonction. ¬e.sort-unstable; ¬e.no-key-association; &reftitle.parameters; array Le tableau d'entrée. callback &return.callbacksort; &callback.cmp; Le fait de retourner des valeurs non entières depuis la fonction de comparaison, comme des valeurs de type &float; fera que l'intervalle sera transtypé en &integer; en se basant sur la valeur retournée par la fonction de rappel. Aussi des valeurs comme 0.99 et 0.1 sera toutes les deux transformées en la valeur 0, et leur comparaison sera égale. &reftitle.returnvalues; &return.success; &reftitle.examples; Exemple avec <function>usort</function> $value) { echo "$key: $value\n"; } ?> ]]> &example.outputs; Évidemment dans ce cas trivial, sort serait plus approprié. Tri avec <function>usort</function> sur un tableau multidimensionnel ]]> Lors du tri de tableau multidimensionnel, $a et $b contiennent des références sur le premier élément du tableau. &example.outputs; Tri avec <function>usort</function> sur un objet name = $name; } /* Ceci est une fonction de comparaison statique */ static function cmp_obj($a, $b) { $al = strtolower($a->name); $bl = strtolower($b->name); if ($al == $bl) { return 0; } return ($al > $bl) ? +1 : -1; } } $a[] = new TestObj("c"); $a[] = new TestObj("b"); $a[] = new TestObj("d"); usort($a, array("TestObj", "cmp_obj")); foreach ($a as $item) { echo $item->name . "\n"; } ?> ]]> &example.outputs; Exemple avec <function>usort</function> en utilisant une <link linkend="functions.anonymous">closure</link> pour trier un tableau multi-dimensionnel 'z', 'key_b' => 'c'); $array[1] = array('key_a' => 'x', 'key_b' => 'b'); $array[2] = array('key_a' => 'y', 'key_b' => 'a'); function build_sorter($key) { return function ($a, $b) use ($key) { return strnatcmp($a[$key], $b[$key]); }; } usort($array, build_sorter('key_b')); foreach ($array as $item) { echo $item['key_a'] . ', ' . $item['key_b'] . "\n"; } ?> ]]> &example.outputs; &reftitle.seealso; uasort &seealso.array.sorting;