Bei Verwendung der GraphQL -API, um Daten zu erhalten, befassen wir uns häufig mit verschachtelten Arrays mit komplexen Strukturen. Da GraphQL den Fallstil von Feldnamen (wie Camelcase, Snake_Case usw.) nicht einschränkt, haben die zurückgegebenen Daten möglicherweise gemischte Schlüsselnamen in verschiedenen Formaten. Wenn Sie den Fall dieser Schlüsselnamen in PHP vereinen möchten, ist Array_Change_key_case () eine sehr praktische Funktion.
In diesem Artikel wird in Kombination mit rekursiver Logik die Funktion der von der GraphQL -API zurückgegebenen Verarbeitungsdaten in Kombination mit rekursiver Logik vorgestellt, um den Effekt von gleichmäßig Kleinbuchstaben oder Großbuchstaben zu erreichen.
Array_Change_key_case () ist eine PHP-integrierte Funktion, die alle Schlüsselnamen eines Arrays in Kleinbuchstaben oder Großbuchstaben umwandelt.
array_change_key_case(array $array, int $case = CASE_LOWER): array
$ case Optionale Parameter:
CASE_LOWER : Standard, in Kleinbuchstaben konvertieren
Case_upper : zur Kapitalisierung konvertieren
Angenommen, Sie fordern die GraphQL -Schnittstelle über die folgende URL an, um eine Liste von Artikeln zu erhalten:
$url = 'https://m66.net/graphql';
Die von der Anfrage zurückgegebenen JSON -Daten lautet wie folgt:
{
"data": {
"ArticleList": [
{
"ID": 101,
"Title": "PHP Array Tricks",
"Author": {
"Name": "John Doe",
"Email": "john@example.com"
}
}
]
}
}
Sie können sehen, dass es verschachtelte Arrays von Objekten enthält und die Schlüsselnamen im Format inkonsistent sind.
Array_Change_key_Case () selbst unterstützt keine mehrdimensionalen Arrays, daher müssen wir eine rekursive Funktion zusammenschließen, um verschachtelte Strukturen zu verarbeiten:
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 von GraphQL Schnittstellenakquisition JSON Daten
$json = '{
"data": {
"ArticleList": [
{
"ID": 101,
"Title": "PHP Array Tricks",
"Author": {
"Name": "John Doe",
"Email": "john@example.com"
}
}
]
}
}';
$data = json_decode($json, true);
// Wenn Sie eine benutzerdefinierte Funktion mit einem einheitlichen Schlüsselnamen als Kleinbuchstaben aufrufen
$normalizedData = change_keys_case_recursive($data, CASE_LOWER);
// Ausgangsergebnis
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
)
)
)
)
)
Wie Sie sehen können, werden alle Schlüsselnamen in Kleinbuchstaben konvertiert, was für die nachfolgende Datenverarbeitung und das Rendering der Vorlage förderlicher ist.
Wenn die von der GraphQL -API zurückgegebenen Verarbeitungsdaten, die Kombination von Array_Change_key_Case () und rekursiver Logik leicht die Einheitlichkeit der Schlüsselnamen im oberen und unteren Fall erreichen können. Eine solche standardisierte Verarbeitung verbessert nicht nur die Lesbarkeit des Codes, sondern vermeidet auch potenzielle Fehler, die durch Inkonsistenzen von Fall verursacht werden. Sie können den Schlüsselnamen in Kleinbuchstaben oder Großbuchstaben entsprechend den Anforderungen umwandeln und flexibel anpassen.