Lorsque vous utilisez l'API GraphQL pour obtenir des données, nous traitons souvent des tableaux imbriqués avec des structures complexes. Étant donné que GraphQL ne limite pas le style de cas des noms de champ (tels que CamelCase, Snake_Case, etc.), les données renvoyées peuvent avoir des noms de clés mixtes dans différents formats. Si vous souhaitez unifier le cas de ces noms de clés dans PHP, Array_Change_Key_Case () est une fonction très pratique.
Cet article présentera comment utiliser la fonction array_change_key_case () en combinaison avec une logique récursive lors du traitement des données renvoyées par l'API GraphQL pour réaliser l'effet des noms de clés uniformément ou majuscules.
array_change_key_case () est une fonction intégrée PHP qui convertit tous les noms de clés d'un tableau en minuscules ou en majuscules.
array_change_key_case(array $array, int $case = CASE_LOWER): array
$ Case Paramètres facultatifs:
Case_lower : par défaut, convertir en minuscules
Case_upper : Convertir en capitalisation
Supposons que vous demandiez l'interface GraphQL via l'URL suivante pour obtenir une liste d'articles:
$url = 'https://m66.net/graphql';
Les données JSON renvoyées par la demande sont les suivantes:
{
"data": {
"ArticleList": [
{
"ID": 101,
"Title": "PHP Array Tricks",
"Author": {
"Name": "John Doe",
"Email": "john@example.com"
}
}
]
}
}
Vous pouvez voir qu'il contient des tableaux imbriqués d'objets, et les noms clés sont incohérents dans le format.
array_change_key_case () lui-même ne prend pas en charge les tableaux multidimensionnels, nous devons donc encapsuler une fonction récursive pour gérer les structures imbriquées:
function change_keys_case_recursive(array $array, int $case = CASE_LOWER): array {
$result = [];
foreach ($array as $key => $value) {
$newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
if (is_array($value)) {
$result[$newKey] = change_keys_case_recursive($value, $case);
} else {
$result[$newKey] = $value;
}
}
return $result;
}
<?php
// Simulation de GraphQL Acquisition d'interface JSON données
$json = '{
"data": {
"ArticleList": [
{
"ID": 101,
"Title": "PHP Array Tricks",
"Author": {
"Name": "John Doe",
"Email": "john@example.com"
}
}
]
}
}';
$data = json_decode($json, true);
// Appeler une fonction personnalisée avec un nom de clé unifié comme minuscule
$normalizedData = change_keys_case_recursive($data, CASE_LOWER);
// Résultat de sortie
print_r($normalizedData);
function change_keys_case_recursive(array $array, int $case = CASE_LOWER): array {
$result = [];
foreach ($array as $key => $value) {
$newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
if (is_array($value)) {
$result[$newKey] = change_keys_case_recursive($value, $case);
} else {
$result[$newKey] = $value;
}
}
return $result;
}
?>
Array
(
[data] => Array
(
[articlelist] => Array
(
[0] => Array
(
[id] => 101
[title] => PHP Array Tricks
[author] => Array
(
[name] => John Doe
[email] => john@example.com
)
)
)
)
)
Comme vous pouvez le voir, tous les noms de clés sont convertis en minuscules, ce qui est plus propice au traitement des données et au rendu des modèles ultérieurs.
Lors du traitement des données renvoyées par l'API GraphQL, en combinant Array_Change_Key_Case () et une logique récursive, il est facile d'obtenir l'uniformité des noms de clés en haut et en minuscules. Un tel traitement standardisé améliore non seulement la lisibilité du code, mais évite également les bogues potentiels causés par des incohérences de cas. Vous pouvez choisir de convertir le nom de la clé en minuscules ou en majuscules en fonction des besoins du projet et l'ajuster de manière flexible.
Étiquettes associées:
API