W3docs

krsort()

Trier des tableaux en PHP est une tâche courante. La fonction krsort() permet de trier un tableau par clé en ordre décroissant.

Fonction PHP krsort() : Trier un tableau par clé en ordre décroissant

Trier des tableaux en PHP est une tâche courante, notamment lorsqu'on traite de grandes quantités de données. La fonction PHP krsort() est une fonction extrêmement utile qui permet aux développeurs de trier un tableau par clé en ordre décroissant. Cette fonction est très puissante et peut économiser beaucoup de temps et d'efforts lors du tri de tableaux. Dans cet article, nous allons passer en revue le fonctionnement de la fonction krsort() en détail et montrer comment l'utiliser dans différents scénarios.

Qu'est-ce que krsort() ?

La fonction krsort() est une fonction intégrée de PHP qui trie un tableau en ordre décroissant en fonction de ses clés, tout en préservant l'association entre chaque clé et sa valeur. Le nom signifie key reverse sort (tri inversé par clé). C'est le pendant décroissant de ksort(), qui trie par clé en ordre croissant.

Puisqu'elle trie par clé (et non par valeur), krsort() est particulièrement utile avec les tableaux associatifs ou les tableaux à clés numériques explicites — par exemple, trier des enregistrements indexés par ID, année ou priorité de façon à ce que la clé la plus grande apparaisse en premier.

Deux points importants à retenir :

  • krsort() trie le tableau sur place et retourne true en cas de succès (elle ne retourne jamais le tableau trié), donc vous l'appelez directement sur la variable.
  • Elle agit sur les clés du tableau. Pour trier par valeur à la place, utilisez arsort() (conserve les clés) ou rsort() (réindexe).

Syntaxe de krsort()

La syntaxe de la fonction krsort() est la suivante :

krsort(array &$array, int $flags = SORT_REGULAR): true

Ici, $array est le tableau à trier (passé par référence, donc le tableau original est modifié), et $flags est un paramètre optionnel qui contrôle la façon dont les clés sont comparées. La fonction retourne toujours true. Les valeurs possibles de $flags sont :

  • SORT_REGULAR : C'est la valeur par défaut. La fonction trie les éléments normalement, sans modifier leurs types de données.
  • SORT_NUMERIC : La fonction trie les éléments numériquement, c'est-à-dire en les traitant comme des nombres.
  • SORT_STRING : La fonction trie les éléments en tant que chaînes de caractères.
  • SORT_LOCALE_STRING : La fonction trie les éléments en tant que chaînes de caractères, en fonction des paramètres régionaux courants.
  • SORT_NATURAL : La fonction trie les éléments dans un ordre naturel, c'est-à-dire en les traitant comme des chaînes, mais en tenant compte de leurs valeurs numériques.
  • SORT_FLAG_CASE : Ce drapeau peut être combiné avec SORT_STRING ou SORT_NATURAL pour trier les chaînes de manière insensible à la casse.

Exemples d'utilisation de krsort()

Voyons maintenant quelques exemples d'utilisation de la fonction krsort().

Exemple 1 : Trier un tableau en ordre décroissant en fonction de ses clés

php— editable, runs on the server

Résultat :

Array
(
    [d] => date
    [c] => cherry
    [b] => banana
    [a] => apple
)

Dans cet exemple, nous avons un tableau à quatre éléments. Nous trions le tableau en ordre décroissant en fonction de ses clés à l'aide de la fonction krsort(). Le résultat montre que le tableau a été trié en ordre décroissant selon ses clés.

Exemple 2 : Trier un tableau en ordre décroissant en fonction de ses clés, numériquement

php— editable, runs on the server

Résultat :

Array
(
    [4] => cherry
    [3] => date
    [2] => apple
    [1] => banana
)

Ici, les clés sont des chaînes numériques. Le tri avec le drapeau SORT_NUMERIC les compare en tant que nombres, de sorte que le tableau se retrouve ordonné de la clé la plus haute (4) à la plus basse (1). Notez que PHP convertit automatiquement les clés de type chaîne ressemblant à des entiers telles que "1" en entiers, donc SORT_REGULAR donnerait le même résultat ici — le drapeau SORT_NUMERIC est important lorsque les clés pourraient sinon être comparées en tant que chaînes (où "10" se trierait avant "9").

Exemple 3 : Trier un tableau en ordre décroissant en fonction de ses clés, sans tenir compte de la casse

php— editable, runs on the server

Résultat :

Array
(
    [d] => date
    [C] => cherry
    [b] => banana
    [A] => apple
)

Dans cet exemple, nous avons un tableau à quatre éléments, dont les clés sont des chaînes, certaines en majuscules. Nous trions le tableau en ordre décroissant selon ses clés, sans tenir compte de la casse, en utilisant la fonction krsort() avec les drapeaux SORT_STRING et SORT_FLAG_CASE. Le résultat montre que le tableau a été trié en ordre décroissant selon ses clés, en ignorant la casse des chaînes.

Fonctions de tri associées

PHP propose une famille complète de fonctions de tri de tableaux. Le choix de la bonne dépend de deux questions : triez-vous par clé ou par valeur, et souhaitez-vous un ordre croissant ou décroissant ?

FonctionTrie parOrdreConserve l'association des clés
ksort()CléCroissantOui
krsort()CléDécroissantOui
asort()ValeurCroissantOui
arsort()ValeurDécroissantOui
sort()ValeurCroissantNon (réindexé)
rsort()ValeurDécroissantNon (réindexé)
uksort()CléRappel personnaliséOui

Si votre logique de tri est trop spécifique pour les drapeaux standard — par exemple, trier les clés par longueur de chaîne — faites appel à uksort(), qui vous permet de fournir votre propre fonction de comparaison.

Conclusion

La fonction krsort() trie un tableau par ses clés en ordre décroissant, sur place, tout en préservant chaque paire clé-valeur. Elle accepte un argument optionnel de drapeau de tri afin de comparer les clés numériquement, en tant que chaînes, naturellement ou sans tenir compte de la casse. Utilisez krsort() chaque fois que vous disposez d'un jeu de données indexé — identifiants, années, priorités — que vous souhaitez présenter de la clé la plus haute à la plus basse, et faites appel à ses fonctions relatives ksort() et arsort() lorsque vous avez besoin d'un ordre différent ou souhaitez trier par valeur.

Pratique

Pratique
Que fait la fonction PHP krsort() ?
Que fait la fonction PHP krsort() ?
Was this page helpful?