sort()
Apprenez à trier des tableaux en PHP avec sort(), asort(), ksort() et leurs variantes pour organiser vos données efficacement.
Introduction
Le tri est l'une des opérations les plus courantes que vous effectuez avec des tableaux : ordonner une liste de prix, classer des noms par ordre alphabétique, hiérarchiser des scores. PHP propose toute une famille de fonctions de tri, et celle que vous choisissez dépend de deux questions — trier par valeur ou par clé ? et avez-vous besoin de conserver les clés d'origine ?
Ce chapitre explique sort() et ses variantes, montre le résultat de chacune et vous aide à choisir la bonne fonction du premier coup.
Comprendre le tri de tableaux en PHP
Les fonctions de tri de tableaux PHP modifient le tableau en place (par référence) et retournent true en cas de succès ou false en cas d'échec — elles ne retournent pas un nouveau tableau trié. Vous écrivez donc toujours sort($arr);, jamais $arr = sort($arr);.
Les fonctions suivent un schéma de nommage prévisible :
| Fonction | Trie par | Conserve les associations clé-valeur ? | Ordre |
|---|---|---|---|
sort() | valeur | Non (réindexe 0,1,2…) | croissant |
rsort() | valeur | Non | décroissant |
asort() | valeur | Oui | croissant |
arsort() | valeur | Oui | décroissant |
ksort() | clé | Oui | croissant |
krsort() | clé | Oui | décroissant |
usort() | personnalisé (valeur) | Non | personnalisé |
uasort() | personnalisé (valeur) | Oui | personnalisé |
uksort() | personnalisé (clé) | Oui | personnalisé |
Le schéma est facile à lire une fois que vous le connaissez : un a en préfixe signifie « conserver les Associations de clés », un k signifie « trier par Clé », un r signifie « Reverse (inverser) » et un u signifie « comparaison définie par l'Utilisateur ».
sort()
La fonction sort() trie un tableau par ordre croissant en fonction des valeurs. C'est le bon choix pour les tableaux indexés simples (de type liste) quand vous ne vous souciez pas des clés d'origine — et c'est là le piège : sort() supprime les clés existantes et réindexe à partir de 0. Ne l'utilisez jamais sur un tableau associatif que vous souhaitez conserver intact.
$numbers = [3, 1, 2];
sort($numbers);
print_r($numbers);Résultat :
Array
(
[0] => 1
[1] => 2
[2] => 3
)Elle fonctionne également avec les chaînes de caractères, en les comparant par ordre alphabétique :
$fruits = ["banana", "apple", "cherry"];
sort($fruits);
print_r($fruits);
// Array ( [0] => apple [1] => banana [2] => cherry )Vous pouvez modifier la règle de comparaison avec le second argument optionnel flags — par exemple SORT_NUMERIC, SORT_STRING ou SORT_NATURAL (qui trie "img10" après "img2" comme un être humain le ferait).
asort()
La fonction asort() trie par valeur en ordre croissant mais préserve l'association clé-valeur. Utilisez-la quand les clés ont une signification — comme une correspondance entre des noms et des scores.
$scores = ['Alice' => 85, 'Bob' => 92, 'Charlie' => 78];
asort($scores);
print_r($scores);Résultat (les lignes sont réordonnées, mais chaque nom conserve son score) :
Array
(
[Charlie] => 78
[Alice] => 85
[Bob] => 92
)Comparez cela avec sort($scores), qui aurait remplacé Charlie/Alice/Bob par 0/1/2 et perdu les noms entièrement.
ksort()
La fonction ksort() trie un tableau par ses clés en ordre croissant, en conservant chaque clé avec sa valeur. C'est pratique quand les clés sont des identifiants, des dates ou des étiquettes que vous souhaitez ordonner.
$data = ['c' => 3, 'a' => 1, 'b' => 2];
ksort($data);
print_r($data);Résultat :
Array
(
[a] => 1
[b] => 2
[c] => 3
)usort() et uasort()
Quand les ordres de tri intégrés ne suffisent pas — tri d'objets, tri par un champ imbriqué ou application de règles métier — passez votre propre fonction de comparaison. usort() trie un tableau ordinaire (en réindexant les clés), tandis que uasort() fait de même mais préserve les clés.
Le callback de comparaison reçoit deux éléments et doit retourner un entier : négatif si le premier doit venir avant le second, positif si après, et zéro s'ils sont égaux. L'opérateur spaceship <=> retourne exactement cela, c'est donc le choix idiomatique.
$people = [
['name' => 'Alice', 'age' => 30],
['name' => 'Bob', 'age' => 25],
['name' => 'Carol', 'age' => 35],
];
usort($people, function ($a, $b) {
return $a['age'] <=> $b['age']; // sort by age, ascending
});
foreach ($people as $p) {
echo $p['name'] . ": " . $p['age'] . "\n";
}Résultat :
Bob: 25
Alice: 30
Carol: 35Pour trier en ordre décroissant, inversez les opérandes : return $b['age'] <=> $a['age'];.
Ordre décroissant
Pour un simple tri inversé, utilisez les variantes préfixées par r plutôt que d'écrire un callback personnalisé : rsort() (par valeur, réindexe), arsort() (par valeur, conserve les clés) et krsort() (par clé, conserve les clés).
$numbers = [3, 1, 2];
rsort($numbers);
print_r($numbers);
// Array ( [0] => 3 [1] => 2 [2] => 1 )Si vous avez besoin d'un tri alphanumérique « naturel », intéressez-vous à natsort(), qui trie ["img12", "img2"] comme img2, img12 plutôt que l'ordre ASCII strict img12, img2.
Applications pratiques du tri de tableaux PHP
Le tri de tableaux en PHP a de nombreuses applications pratiques, notamment :
Tri de tableaux de prix de produits
Lors de la création d'un site d'e-commerce, vous aurez peut-être besoin de trier les produits en fonction de leurs prix. En utilisant les fonctions de tri de tableaux PHP, vous pouvez trier un tableau de prix de produits par ordre croissant ou décroissant, permettant aux clients de filtrer les produits par plage de prix.
Tri de tableaux d'enregistrements de base de données
Lors de la récupération de données depuis une base de données, vous aurez peut-être besoin de trier les enregistrements en fonction de critères spécifiques, comme la date, l'heure ou l'ordre alphabétique. En utilisant les fonctions de tri de tableaux PHP, vous pouvez trier les enregistrements de la base de données après les avoir récupérés, facilitant ainsi l'analyse des données.
Tri de tableaux de données saisies par l'utilisateur
Lors de la collecte de données saisies par l'utilisateur, vous aurez peut-être besoin de trier les données en fonction de critères spécifiques, comme l'âge ou la localisation. En utilisant les fonctions de tri de tableaux PHP, vous pouvez trier les données saisies par ordre croissant ou décroissant, facilitant leur affichage pour d'autres utilisateurs.
Conclusion
Choisir le bon tri se résume à deux questions : ordonnez-vous par valeur ou par clé, et avez-vous besoin de conserver les clés d'origine ? Utilisez sort()/rsort() pour les listes simples, asort()/arsort() et ksort()/krsort() quand les clés importent, et usort()/uasort() quand vous avez besoin de règles personnalisées. Étant donné que toutes ces fonctions trient en place et retournent un booléen, pensez à les appeler comme des instructions — et non à assigner leur résultat au tableau.