W3docs

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ètreDescription
$arrayLe array d'entrée. Il n'est pas modifié — un nouveau array est retourné.
$caseL'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

php— editable, runs on the server

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/html

Sortie :

text/html

Vous 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

Pratique

Pratique
Que fait la fonction PHP array_change_key_case ?
Que fait la fonction PHP array_change_key_case ?
Was this page helpful?