Manuel PHP
Précédent |  | Suivant

# usort

(PHP 3>= 3.0.3, 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 méthode.

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.

> Note : Si deux éléments sont égaux, au sens de la fonction `cmp_function`, leur ordre sera indéfini. Jusqu'en `PHP` 4.0.6, la fonction de tri leur conserverait leur ordre original, mais le nouvel algorithme introduit en `PHP` 4.1.0 fait que ce n'est plus le cas, car cela serait trop coûteux.

Cette fonction retourne `TRUE` en cas de succès, `FALSE` en cas d'échec.

Exemple 1. Exemple avec usort()

`<?php function compare($a, $b) { if ($a == $b) { return 0; } return ($a > $b) ? -1 : 1; } $a = array (3, 2, 5, 6, 1); usort ($a, "compare"); while (list ($key, $value) = each ($a)) { echo "$key: $value\n"; } ?>`

Cet exemple va afficher :

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

> Note : Evidemment dans ce cas trivial, rsort() serait plus approprié.

Exemple 2. Tri avec usort() sur un tableau multi-dimensionnel

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

Lors du tri de tableau multi-dimensionnel, `$a` et `$b` contiennent des références sur le premier élément du tableau. Cet exemple va afficher :

    $fruits[0]: raisins
    $fruits[1]: pommes
    $fruits[2]: citron

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 */
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");
uasort($a, array ("TestObj", "cmp_obj"));
foreach ($a as $item) {
echo $item->name."\n";
}
?>`

Cet exemple va afficher :

    b
    c
    d

Voir aussi uasort(), uksort(), sort(), asort(), arsort(), ksort(), natsort() et rsort().

Précédent | Sommaire | Suivant
uksort | Niveau supérieur | Aspell [Obs.]