uksort
Classes/Objets
Fonctions sur les tableaux
PHP Manual

# usort

(PHP 4, PHP 5)

usort — Trie un tableau en utilisant une fonction de comparaison

### Description

bool usort ( array `&$array` , callback `$cmp_function` )

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.

> Note: Si deux éléments sont égaux, au sens de la fonction `cmp_function`, leur ordre sera indéfini.

> Note: Cette fonction assigne de nouvelles clés pour les éléments du paramètre `array`. Elle effacera toutes les clés existantes que vous aviez pu assigner, plutôt que de les trier.

### Liste de paramètres

`array`

  Le tableau d'entrée.

`cmp_function`

  La fonction de comparaison `cmp_function` doit retourner un entier, qui sera inférieur, égal ou supérieur à zéro suivant que le premier argument est considéré comme plus petit, égal ou plus grand que le second argument. Si les deux arguments sont égaux, leur ordre est indéfini.

### Valeurs de retour

Cette fonction retourne `TRUE` en cas de succès ou `FALSE` si une erreur survient.

### Historique

Version | Description
--- | ---
4.1.0 | Un nouvel algorithme est introduit. Le paramètre `cmp_function` ne conserve pas l'ordre original des éléments considérés comme égaux.

### Exemples

Exemple #1 Exemple avec 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 $key => $value) {
echo "$key: $value\n";
}
?>`

L'exemple ci-dessus va afficher :

    0: 1
    1: 2
    2: 3
    3: 5
    4: 6

> Note: Évidemment dans ce cas trivial, sort() serait plus approprié.

Exemple #2 Tri avec usort() sur un tableau multidimensionnel

`<?php
function cmp($a, $b)
{
return strcmp($a["fruit"], $b["fruit"]);
}
$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";
usort($fruits, "cmp");
while (list($key, $value) = each($fruits)) {
echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
?>`

Lors du tri de tableau multidimensionnel, $a et $b contiennent des références sur le premier élément du tableau.

L'exemple ci-dessus va afficher :

    $fruits[0]: apples
    $fruits[1]: grapes
    $fruits[2]: lemons

Exemple #3 Tri avec usort() sur un objet

`<?php
class TestObj {
var $name;
function TestObj($name)
{
$this->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";
}
?>`

L'exemple ci-dessus va afficher :

    b
    c
    d

### Voir aussi

- uasort() - Trie un tableau en utilisant une fonction de rappel
- Les fonctions de tri des tableaux

uksort
Classes/Objets
Fonctions sur les tableaux
PHP Manual