Position actuelle: Accueil> Derniers articles> Array_change_key_case () peut-il gérer les clés numériques?

Array_change_key_case () peut-il gérer les clés numériques?

M66 2025-05-12

En PHP, vous rencontrez souvent la nécessité d'une conversion de cas clés lors du traitement des tableaux, en particulier lorsque vous traitez des données de tableau associatives obtenues à partir de sources externes (telles que les formulaires, les rendements de l'API, etc.). array_change_key_case () est une fonction utilisée pour unifier le cas des noms de clés de tableau. Cependant, un problème souvent négligé mais assez critique est:

Array_change_key_case () change-t-il le cas des "clés numériques" dans le tableau?

La réponse est: Non.

Explication de documentation officielle

Selon la documentation PHP officielle , le rôle de Array_Change_Key_Case () est:

Renvoie un tableau dont les clés sont converties en majuscules ou en minuscules.

Mais cela ne s'applique qu'aux touches de type de chaîne et aux touches numériques, la fonction ne apporte aucune modification.

Exemple description

Voici un exemple pour démontrer son comportement réel:

 <?php
$data = [
    "Name" => "Alice",
    "EMAIL" => "alice@example.com",
    100 => "numéro de série",
    "AGE" => 30
];

$result = array_change_key_case($data, CASE_LOWER);

print_r($result);
?>

Résultat de sortie:

 Array
(
    [name] => Alice
    [email] => alice@example.com
    [100] => numéro de série
    [age] => 30
)

Vous pouvez voir:

  • Toutes les touches de chaîne (telles que "nom" , "e-mail" , "âge" ) sont converties avec succès en minuscules;

  • La clé numérique 100 reste inchangée, ne devenant ni une chaîne ni un cas modifiant.

Pourquoi les clés du nombre ne changent-elles pas?

En effet, les nombres sont sans cas en PHP. Les clés d'un tableau en PHP peuvent être des chaînes ou des entiers (intégrales). Et la conversion de cas n'est essentiellement valable que pour les chaînes. Par conséquent, array_change_key_case () ne traitera que des éléments dont les clés sont des chaînes.

Exemples de scénarios d'application pratiques

Si vous renvoyez un ensemble de données de tableau via les demandes d'API et souhaitez traiter uniformément les noms de clés, vous pouvez utiliser cette fonction. Mais pendant le processus, vous n'avez pas à vous soucier que les clés de l'indice numérique soient mal converties en chaînes ou changeant. Par exemple:

 <?php
$json = '{
    "UserID": 101,
    "Username": "bob",
    "Scores": {
        "0": 90,
        "1": 85,
        "2": 88
    }
}';

$data = json_decode($json, true);
$data = array_change_key_case($data, CASE_LOWER);

// Sortir JSON Structure à l&#39;avant
echo json_encode($data);
?>

Le frontal peut toujours accéder aux données à l'aide de .scores [0] , sans être affectés.

Si vous devez traiter davantage les structures imbriquées dans le tableau (comme convertir récursivement les noms de clés à tous les niveaux en minuscules), vous pouvez encapsuler une fonction récursive, mais vous n'avez toujours pas à vous soucier des touches numériques:

 function array_change_key_case_recursive($arr, $case = CASE_LOWER) {
    return array_map(function ($item) use ($case) {
        if (is_array($item)) {
            return array_change_key_case_recursive($item, $case);
        }
        return $item;
    }, array_change_key_case($arr, $case));
}

résumé

  • ? array_change_key_case () n'est valide que pour les touches de chaîne ;

  • ? Il ne modifiera pas les clés numériques dans le tableau;

  • ?? Les clés de nombre sont strictement entières en PHP et il n'y a pas de théorie supérieure et inférieure;

  • ?? Si vous devez traiter récursivement les tableaux imbriqués, vous devez encapsuler manuellement la fonction récursive pour traiter les touches de chaîne.

De cette façon, vous pouvez utiliser array_change_key_case () avec la tranquillité d'esprit pendant le développement sans vous soucier des clés du nombre mal traitées!