Tableaux:Tri suivant des fonctions utilisateur
Un article de WikiTuto.
Sommaire |
Explication
Ces fonctions de tri opèrent sur l'ordre alphabétique ou numérique des valeurs. Pour faire des tris complexes, il faut utiliser les fonctions de tris basées sur des fonctions utilisateur. Basiquement, pour trier plusieurs valeurs, il suffit de pouvoir comparer deux valeurs. Pour faire un tri suivant un ordre défini par l'utilisateur, il suffit donc de fournir une fonction de comparaison de deux éléments. Les fonctions de tri utilisateur sont usort() pour les tableaux ordinaires et uksort(), uasort() pour les tableaux associatifs.
Exemple
L'exemple suivant montre comment faire un tri basé sur le troisième caractère de l'élément. Le tableau contient un ensemble de prénoms masculins, l'idée est de faire le tri en ne tenant pas compte des caractères accentués. Voici le code correspondant :
<?php
function replace_car($a) {
if ((($a >= "a") and ($a <="z"))
or (($a >= "A") and ($a <="Z"))) {
return $a ;
}
// Il en manque, c'est juste pour l'exemple...
switch($a) {
case "é" :
return "e"; break;
case "è" :
return "e"; break;
case "ê" :
return "e"; break;
case "à" :
return "a"; break;
case "î" :
return "i"; break;
case "ï" :
return "i"; break;
case "ô" :
return "o"; break;
}
}
function cmp($a,$b) {
$car_a = replace_car($a[2]);
$car_b = replace_car($b[2]);
if ($car_a == $car_b) return 0;
return ($car_a < $car_b) ? -1 : 1;
}
$a = array("Jean","Gilles","Louis","Paul","Albert","Stéphane","Michel","Loïc");
usort($a, cmp);
while(list($key,$value) = each($a)) {
echo "
($value[2]) $key: $value\n";
}
?>
Ce qui produit les résultats suivants :
(a) 0: Jean (b) 1: Albert (c) 2: Michel (é) 3: Stéphane (ï) 4: Loïc (l) 5: Gilles (u) 6: Paul (u) 7: Louis
Pour effectuer le tri dans l'ordre inverse, il suffit de définir la fonction une comparaison inverse :
<?php
function rcmp($a,$b) {
$car_a = replace_car($a[2]);
$car_b = replace_car($b[2]);
if ($car_a == $car_b) return 0;
return ($car_a > $car_b) ? -1 : 1;
}
Voir aussi
- L'ensemble des articles concernant le PHP
- Introduction au PHP
- Syntaxe et Constructions
- Types de données
- Opérateurs et Expressions
- Instructions conditionnelles
- Les tableaux - Array
- Tableaux associatifs
- Tableaux à deux dimensions
- Tri sur les tableaux
- Tri suivant des fonctions utilisateur
- Fonctions couramment utilisées



