8.3 Tableaux
8 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies . Voir aussi . array_change_key_case . array_chunk . array_combine . array_count_values . array_diff_assoc . array_diff_key . array_diff_uassoc . array_diff_ukey . array_diff . array_fill . array_filter . array_flip . array_intersect_assoc . array_intersect_key . array_intersect_uassoc . array_intersect_ukey . array_intersect . array_key_exists . array_keys . array_map . array_merge_recursive . array_merge . array_multisort . array_pad . array_pop . array_product . array_push . array_rand . array_reduce . array_reverse . array_search . array_shift . array_slice . array_splice . array_sum . array_udiff_assoc . array_udiff_uassoc . array_udiff . array_uintersect_assoc . array_uintersect_uassoc . array_uintersect . array_unique . array_unshift . array_values . array_walk_recursive . array_walk . array . arsort . asort . compact . count . current . each . end . extract . in_array . key . krsort . ksort . list . natcasesort . natsort . next . pos . prev . range . reset . rsort . shuffle . sizeof . sort . uasort . uksort ->usort
|
8.3.81 usort()
Trie un tableau en utilisant une fonction de comparaison
[ Exemples avec usort ] PHP 3 >= 3.0.3, PHP 4, PHP 5
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.
|
| 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 pû assigner, plutôt
que de réordonner les clés.
|
Cette fonction retourne
TRUE
en cas de
succès,
FALSE
en cas d'échec.
| 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");
foreach ($a as $key => $value) { echo "$key: $value\n"; } ?>
|
| Note | |
Evidemment dans ce cas trivial,
rsort
serait plus
approprié.
|
| 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"; } ?>
|
| 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"; } ?>
|
Voir aussi
uasort
,
uksort
,
sort
,
asort
,
arsort
,
ksort
,
natsort
et
rsort
.
|