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"; } ?>`

L'exemple ci-dessus 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.

L'exemple ci-dessus 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";
}
?>`

L'exemple ci-dessus 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.]