usortTrie un tableau en utilisant une fonction de comparaison
&reftitle.description;
boolusortarrayarraycallablecallbackusort 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 usort
$value) {
echo "$key: $value\n";
}
?>
]]>
&example.outputs;
Évidemment dans ce cas trivial, sort serait plus
approprié.
Tri avec usort 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 usort 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 usort en utilisant
une closure
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;