Position actuelle: Accueil> Derniers articles> Array_change_key_case () peut-il être utilisé sur les objets stdclass?

Array_change_key_case () peut-il être utilisé sur les objets stdclass?

M66 2025-04-28

Dans PHP, Array_Change_Key_Case () est une fonction très pratique qui convertit rapidement les noms de clés d'un tableau en minuscules ou en majuscules, et est souvent utilisé pour unifier les formats de données, en particulier lors du traitement des données externes (telles que les retours API). Cependant, cette fonction peut-elle être utilisée directement sur l'objet STDClass ? Cet article vous amènera à explorer ce problème ensemble.

Qu'est-ce que Array_Change_key_Case ()?

array_change_key_case () prend un tableau et convertit tous ses noms de clés en minuscules ou en majuscules:

 $data = [
    "Name" => "Alice",
    "AGE" => 25
];

$lowercase = array_change_key_case($data, CASE_LOWER);
print_r($lowercase);

Résultat de sortie:

 Array
(
    [name] => Alice
    [age] => 25
)

Qu'est-ce que STDClass?

Dans PHP, STDClass est le type d'objet anonyme le plus utilisé. Plusieurs fois, par exemple, lors du décodage d'une chaîne JSON via JSON_DECODE () , si le deuxième paramètre n'est pas passé , l'objet STDClass sera renvoyé par défaut.

 $json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);
print_r($obj);

Le résultat de sortie est similaire à:

 stdClass Object
(
    [Name] => Alice
    [AGE] => 25
)

Array_change_key_case () peut-il être utilisé directement pour stdclass?

La réponse est: elle ne peut pas être utilisée directement . array_change_key_case () accepte uniquement les tableaux en tant que paramètres d'entrée. Si vous essayez de passer l'objet STDClass , vous obtiendrez un avertissement ou une erreur.

Exemple:

 $json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);

$result = array_change_key_case($obj, CASE_LOWER);

Sortir:

 Warning: array_change_key_case() expects parameter 1 to be array, object given

Nous devons donc convertir l'objet en un tableau d'abord , puis utiliser la fonction.

Correction: Convertir en un tableau d'abord

Vous pouvez convertir StdClass en un tableau à l'aide de la conversion de type ou get_object_vars () :

 $json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);

// méthode 1:Conversion de type
$arr = (array) $obj;

// méthode 2:get_object_vars()
$arr2 = get_object_vars($obj);

// utiliser array_change_key_case
$lowercase = array_change_key_case($arr, CASE_LOWER);
print_r($lowercase);

Sortir:

 Array
(
    [name] => Alice
    [age] => 25
)

Si vous devez convertir le résultat final en un objet , vous pouvez le faire:

 $lower_obj = (object) $lowercase;
print_r($lower_obj);

résultat:

 stdClass Object
(
    [name] => Alice
    [age] => 25
)

Scénarios d'application pratiques

Supposons que vous obteniez des données utilisateur à partir d'une interface (par exemple https://api.m66.net/user/info ):

 $response = file_get_contents('https://api.m66.net/user/info');
$data = json_decode($response); // La valeur par défaut est stdClass

$normalized = array_change_key_case((array) $data, CASE_LOWER);
print_r($normalized);

De cette façon, que les champs renvoyés par l'interface soient majuscules, en minuscules ou mixtes, vous pouvez les traiter uniformément dans le format dont vous avez besoin.

Résumer

  • array_change_key_case () ne peut être utilisé que dans les tableaux;

  • STDClass doit être converti en premier en un tableau;

  • Il est recommandé d'appeler cette fonction après la conversion;

  • Après le traitement, vous pouvez également revenir à l'objet si nécessaire.

Cette astuce est très couramment utilisée lors du traitement des données JSON, en particulier lors de la connexion avec des interfaces externes, et peut vous aider à éviter de nombreux bogues causés par un boîtier de terrain incohérent.