ksort()
Découvrez la fonction ksort() en PHP pour trier un tableau par clé en ordre croissant, avec syntaxe, paramètres et exemples pratiques.
Fonction PHP : Array ksort()
La fonction PHP ksort() trie un tableau par ses clés en ordre croissant, en conservant l'association entre chaque clé et sa valeur d'origine. Elle est l'équivalent basé sur les clés de asort(), qui trie par valeur, et l'opposé de krsort(), qui trie les clés en ordre décroissant.
Cette page explique quand utiliser ksort(), sa syntaxe, ses paramètres et sa valeur de retour, les indicateurs de type de tri disponibles, ainsi que plusieurs exemples pratiques (dont le cas classique du tri de clés de chaînes numériques).
Quand utiliser ksort()
Utilisez ksort() lorsque les clés ont une signification et que vous souhaitez ordonner le tableau par elles — par exemple :
- Trier un tableau associatif de paires
nom => valeuralphabétiquement par nom. - Mettre des entrées de configuration ou des en-têtes HTTP dans un ordre prévisible et déterministe.
- Ordonner des données indexées par année, ID ou catégorie avant de les parcourir ou de les afficher.
Comme ksort() préserve l'association clé/valeur, c'est l'outil approprié quand réindexer le tableau (comme le ferait un simple sort()) ferait perdre de l'information. Consultez la vue d'ensemble Tri des tableaux pour une comparaison de toutes les fonctions de tri PHP.
Syntaxe
ksort($array, $sorting_type);Paramètres
La fonction ksort() prend deux paramètres :
| Paramètre | Requis | Description |
|---|---|---|
$array | Oui | Le tableau à trier. Il est passé par référence et modifié en place. |
$sorting_type | Non | Un indicateur qui contrôle la façon dont les clés sont comparées (voir le tableau ci-dessous). Par défaut : SORT_REGULAR. |
L'indicateur $sorting_type accepte les constantes suivantes :
| Indicateur | Comportement |
|---|---|
SORT_REGULAR | Compare les éléments normalement (par défaut). Les chaînes numériques sont comparées comme des nombres. |
SORT_NUMERIC | Compare les éléments numériquement. |
SORT_STRING | Compare les éléments comme des chaînes. |
SORT_NATURAL | Compare les éléments comme des chaînes en utilisant l'ordre naturel (comme natsort()). |
SORT_LOCALE_STRING | Compare les éléments comme des chaînes, en fonction des paramètres régionaux actuels. |
Remarque : ksort() modifie le tableau d'origine en place — elle ne retourne pas un nouveau tableau trié. L'ordre des clés d'origine est perdu après l'appel.
Valeur de retour
La fonction ksort() retourne un boolean : true en cas de succès et false en cas d'échec.
Exemple 1 : Trier un tableau associatif par clé
Ici, les clés sont les noms de personnes, donc ksort() ordonne le tableau alphabétiquement par nom (Ben, Joe, Peter) tout en conservant chaque nom associé à l'âge correct :
Résultat :
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)Exemple 2 : Trier un tableau associatif par clé en ordre décroissant
Pour un ordre de clés décroissant, utilisez krsort() à la place — elle fonctionne exactement comme ksort() mais inverse le résultat :
Résultat :
Array
(
[Peter] => 35
[Joe] => 43
[Ben] => 37
)Exemple 3 : Trier un tableau indexé par clé
Un tableau indexé a déjà les clés 0, 1, 2, 3 dans l'ordre, donc le trier par clé laisse les éléments inchangés. Cela montre que ksort() trie les clés, pas les valeurs — pour trier les valeurs elles-mêmes, utilisez sort() :
Résultat :
Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)Exemple 4 : Trier un tableau indexé par clé en ordre décroissant
Inverser l'ordre des clés d'un tableau indexé avec krsort() conserve chaque valeur avec sa clé numérique d'origine, de sorte que les éléments apparaissent dans l'ordre d'insertion inverse :
Résultat :
Array
(
[3] => yellow
[2] => blue
[1] => green
[0] => red
)Cas particulier : clés de chaînes numériques et l'indicateur de tri
Une surprise fréquente est le tri d'un tableau dont les clés sont des chaînes numériques. Par défaut (SORT_REGULAR), PHP les compare comme des nombres, donc "10" vient après "2". Passer SORT_STRING les compare caractère par caractère, plaçant "10" avant "2" :
<?php
$data = ["10" => "a", "1" => "b", "2" => "c"];
ksort($data); // SORT_REGULAR (numeric)
print_r($data);
ksort($data, SORT_STRING); // string comparison
print_r($data);Résultat :
Array
(
[1] => b
[2] => c
[10] => a
)
Array
(
[1] => b
[10] => a
[2] => c
)Choisissez l'indicateur $sorting_type qui correspond à la façon dont vous souhaitez que les clés soient interprétées.
Conclusion
La fonction ksort() trie un tableau PHP par ses clés en ordre croissant, en place, tout en préservant chaque paire clé/valeur. Utilisez-la quand les clés sont significatives et que l'ordre importe ; utilisez krsort() pour l'ordre décroissant, asort() / arsort() pour trier par valeur tout en conservant les clés, ou sort() lorsque vous souhaitez supprimer les clés entièrement. Choisissez le bon indicateur $sorting_type — surtout lorsque vos clés sont des chaînes numériques — pour obtenir la comparaison attendue.
graph TD
A[PHP array] -->|ksort| B[Sorted PHP array]