array_change_key_case()
Découvrez la fonction PHP array_change_key_case() pour convertir les clés d'un array en minuscules ou en majuscules, avec exemples pratiques.
Fonction PHP array_change_key_case()
array_change_key_case() retourne une copie d'un array dont toutes les clés string sont converties en minuscules ou en majuscules. Cette fonction est particulièrement utile pour normaliser des clés provenant d'une source imprévisible — en-têtes HTTP, titres de colonnes CSV, lignes de base de données ou saisies utilisateur — afin que le reste du code puisse les retrouver avec une casse unique et connue.
Cette page couvre la syntaxe, les paramètres, la valeur de retour, les pièges liés aux clés numériques et aux collisions de clés, ainsi que quelques recettes pratiques.
Syntaxe
array_change_key_case(array $array, int $case = CASE_LOWER): array| Paramètre | Description |
|---|---|
$array | Le array d'entrée. Il n'est pas modifié — un nouveau array est retourné. |
$case | L'une des constantes CASE_LOWER (valeur par défaut) ou CASE_UPPER. |
La fonction retourne un nouveau array avec les clés dont la casse a été modifiée ; le array d'origine reste intact. Seules les clés string sont affectées — les clés entières sont retournées sans modification (voir Les clés numériques sont ignorées ci-dessous).
Exemple de base : passer les clés en majuscules
Sortie :
Array
(
[FIRST_NAME] => John
[LAST_NAME] => Doe
)Les clés sont maintenant en majuscules, tandis que les valeurs (John, Doe) restent inchangées.
Comportement par défaut : passage en minuscules
Lorsque l'argument $case est omis, la valeur par défaut est CASE_LOWER, ce qui rend les clés en minuscules. C'est l'utilisation la plus courante — normaliser une entrée à casse mixte avant de la lire :
<?php
$headers = array("Content-Type" => "text/html", "X-Powered-By" => "PHP");
// No second argument → CASE_LOWER
$normalized = array_change_key_case($headers);
echo $normalized["content-type"]; // text/htmlSortie :
text/htmlVous pouvez désormais toujours lire $normalized["content-type"] quelle que soit la casse d'origine de l'en-tête.
Les clés numériques sont ignorées
array_change_key_case() n'agit que sur les clés string. Les clés entières passent sans modification, donc un array indexé est retourné exactement tel qu'il a été transmis :
<?php
$mixed = array("Name" => "Ada", 0 => "zero", "Age" => 36);
print_r(array_change_key_case($mixed, CASE_UPPER));Sortie :
Array
(
[NAME] => Ada
[0] => zero
[AGE] => 36
)Attention aux collisions de clés
Les clés d'un array PHP devant être uniques, le changement de casse peut provoquer la collision de deux clés distinctes. Dans ce cas, c'est la dernière valeur qui l'emporte et l'entrée précédente est silencieusement supprimée :
<?php
$array = array("Name" => "Ada", "name" => "Grace");
print_r(array_change_key_case($array, CASE_LOWER));Sortie :
Array
(
[name] => Grace
)"Name" et "name" deviennent tous les deux "name", donc seule la dernière affectation (Grace) survit. Si conserver chaque entrée est important, vérifiez les doublons insensibles à la casse avant d'appeler cette fonction.
Seul le premier niveau est modifié
Cette fonction n'est pas récursive — les clés des arrays imbriqués sont laissées en l'état. Pour modifier les clés plus profondément dans la structure, vous devez parcourir le array vous-même :
<?php
function changeKeyCaseRecursive(array $array, int $case = CASE_LOWER): array
{
$result = array_change_key_case($array, $case);
foreach ($result as $key => $value) {
if (is_array($value)) {
$result[$key] = changeKeyCaseRecursive($value, $case);
}
}
return $result;
}
$data = array("User" => array("First" => "Ada"));
print_r(changeKeyCaseRecursive($data, CASE_UPPER));Sortie :
Array
(
[USER] => Array
(
[FIRST] => Ada
)
)Cas d'utilisation courants
- Normaliser les en-têtes HTTP ou les paramètres de requête afin que les recherches ne dépendent pas de la casse utilisée par l'expéditeur.
- Nettoyer les en-têtes de colonnes CSV ou de feuilles de calcul avant de mapper les lignes vers votre modèle.
- Rendre les clés de configuration ou de base de données cohérentes entre du code écrit par différentes personnes.
Fonctions associées
strtolower()etstrtoupper()— modifient la casse d'une valeur string (cette fonction les utilise sur les clés).array_keys()etarray_values()— extraient les clés ou les valeurs d'un array.array_flip()— échange les clés et les valeurs.array_map()— transforme les valeurs d'un array à l'aide d'un callback.- Voir PHP Arrays pour une vue d'ensemble plus large.