Maîtriser arsort() en PHP : Trier les tableaux en ordre décroissant par valeur
Apprenez à utiliser arsort() en PHP pour trier les tableaux associatifs en ordre décroissant par valeur tout en préservant les associations de clés.
arsort() trie un tableau associatif en ordre décroissant par valeur tout en maintenant chaque valeur liée à sa clé d'origine. Le « a » signifie associatif (les associations de clés sont préservées) et le « r » signifie reverse (la valeur la plus grande en premier). Cette page couvre sa syntaxe, les drapeaux de tri optionnels, des exemples exécutables, et comment arsort() se distingue des autres fonctions de tri PHP.
Utilisez arsort() chaque fois que les clés ont une signification que vous ne devez pas perdre — une carte de noms de produits vers des prix, de noms d'utilisateurs vers des scores, ou de catégories vers des compteurs — et que vous souhaitez avoir les valeurs les plus élevées en tête.
Syntaxe
arsort(array &$array, int $flags = SORT_REGULAR): true$array— le tableau à trier. Il est passé par référence, doncarsort()réorganise le tableau sur place plutôt que de retourner un nouveau tableau. La fonction elle-même retournetrue.$flags— optionnel. Contrôle la façon dont les valeurs sont comparées. Par défautSORT_REGULAR.
Drapeaux de tri
L'argument $flags modifie la façon dont deux valeurs sont comparées :
SORT_REGULAR— compare les éléments normalement, sans changer leurs types (valeur par défaut).SORT_NUMERIC— compare les éléments comme des nombres.SORT_STRING— compare les éléments comme des chaînes de caractères.SORT_NATURAL— compare les chaînes en utilisant un algorithme d'« ordre naturel » (ainsi"img10"est trié après"img2").SORT_FLAG_CASE— à combiner avecSORT_STRINGouSORT_NATURALen utilisant|pour rendre la comparaison de chaînes insensible à la casse.
Choisir le bon drapeau est important : avec le SORT_REGULAR par défaut, les chaînes numériques "10" et "9" sont comparées numériquement, mais dans un tableau mixte les résultats peuvent être surprenants. Utilisez SORT_NUMERIC ou SORT_STRING explicitement lorsque les types de valeurs sont connus.
Trier un tableau associatif
Ce code affichera :
orange - 3
apple - 2
banana - 1Les valeurs sont maintenant ordonnées du plus grand au plus petit, et surtout chaque nom de fruit pointe toujours vers son propre compteur — arsort() a préservé l'association clé/valeur. C'est précisément ce qui le rend approprié pour des choses comme les classements ou les listes de prix.
Trier avec un drapeau
Ce code affichera :
1 - 5
4 - 4
0 - 3
2 - 2
3 - 1Le tableau $numbers est trié en ordre décroissant par valeur en utilisant SORT_NUMERIC. Remarquez comment les clés numériques d'origine se déplacent avec leurs valeurs plutôt que d'être réindexées en 0, 1, 2…. Si vous n'avez pas besoin de préserver ces clés, utilisez rsort() à la place, qui rénumérose le tableau.
arsort() vs. les autres fonctions de tri
Les fonctions de tri de tableaux de PHP forment une famille cohérente. Savoir laquelle utiliser dépend de deux questions : trier par valeur ou par clé ? et préserver les clés ou non ?
| Fonction | Trie par | Ordre | Conserve l'association de clés |
|---|---|---|---|
asort() | valeur | croissant | oui |
arsort() | valeur | décroissant | oui |
sort() | valeur | croissant | non (réindexé) |
rsort() | valeur | décroissant | non (réindexé) |
ksort() | clé | croissant | oui |
krsort() | clé | décroissant | oui |
Ainsi arsort() est le membre « décroissant, par valeur, avec conservation des clés » de la famille — c'est le miroir de asort().
Pièges courants
- Elle retourne
true, pas le tableau trié. Écrire$sorted = arsort($array);affectetrueà$sorted. Le tri s'effectue sur le$arrayd'origine, sur place. - Les clés numériques ne sont pas réindexées. C'est tout l'intérêt d'
arsort(). Si vous souhaitez une séquence propre0, 1, 2…après le tri, utilisezrsort(). - Comparer des types mixtes peut donner un ordre inattendu avec
SORT_REGULAR. Passez un drapeau explicite lorsque votre tableau mélange des chaînes et des nombres. - Pour une logique de comparaison personnalisée (tri d'objets, ou par une clé calculée), tournez-vous vers
uasort(), qui vous permet de fournir votre propre fonction de rappel de comparaison tout en préservant les clés.
Conclusion
arsort() trie un tableau en ordre décroissant par valeur tout en maintenant chaque clé liée à sa valeur, ce qui le rend idéal pour les données classées et étiquetées comme des scores ou des prix. Gardez à l'esprit qu'il trie sur place et retourne true, et choisissez un drapeau de tri adapté à vos types de données. Lorsque vous avez besoin d'une combinaison différente d'ordre, de tri par valeur ou par clé, ou de préservation des clés, les fonctions apparentées du tableau ci-dessus couvrent tous les cas.