W3docs

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, donc arsort() réorganise le tableau sur place plutôt que de retourner un nouveau tableau. La fonction elle-même retourne true.
  • $flags — optionnel. Contrôle la façon dont les valeurs sont comparées. Par défaut SORT_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 avec SORT_STRING ou SORT_NATURAL en 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

php— editable, runs on the server

Ce code affichera :

orange - 3
apple - 2
banana - 1

Les 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

php— editable, runs on the server

Ce code affichera :

1 - 5
4 - 4
0 - 3
2 - 2
3 - 1

Le 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 ?

FonctionTrie parOrdreConserve l'association de clés
asort()valeurcroissantoui
arsort()valeurdécroissantoui
sort()valeurcroissantnon (réindexé)
rsort()valeurdécroissantnon (réindexé)
ksort()clécroissantoui
krsort()clédécroissantoui

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); affecte true à $sorted. Le tri s'effectue sur le $array d'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 propre 0, 1, 2… après le tri, utilisez rsort().
  • 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.

Pratique

Pratique
Quelle est la fonctionnalité de la fonction arsort() en PHP ?
Quelle est la fonctionnalité de la fonction arsort() en PHP ?
Was this page helpful?