GraphQL API를 사용하여 데이터를 얻을 때 종종 복잡한 구조로 중첩 어레이를 처리합니다. GraphQL은 필드 이름 (예 : Camelcase, Snake_case 등)의 케이스 스타일을 제한하지 않기 때문에 반환 된 데이터는 다른 형식의 키 이름을 혼합했을 수 있습니다. PHP에서 이러한 주요 이름의 경우를 통합하려면 Array_change_key_case ()는 매우 실용적인 기능입니다.
이 기사에서는 균일 한 소문자 또는 대문자 키 이름의 효과를 달성하기 위해 GraphQL API에 의해 데이터를 처리 할 때 array_change_key_case () 함수를 재귀 로직과 함께 사용하는 방법을 소개합니다.
Array_change_key_case () 는 배열의 모든 키 이름을 소문자 또는 대문자로 변환하는 PHP 내장 기능입니다.
array_change_key_case(array $array, int $case = CASE_LOWER): array
$ CASE 선택적 매개 변수 :
Case_Lower : 기본값, 소문자로 변환하십시오
CASE_UPPER : 대문자로 변환합니다
기사 목록을 얻으려면 다음 URL을 통해 GraphQL 인터페이스를 요청한다고 가정 해 봅시다.
$url = 'https://m66.net/graphql';
요청에 의해 반환 된 JSON 데이터는 다음과 같습니다.
{
"data": {
"ArticleList": [
{
"ID": 101,
"Title": "PHP Array Tricks",
"Author": {
"Name": "John Doe",
"Email": "john@example.com"
}
}
]
}
}
중첩 된 객체 배열이 포함되어 있으며 키 이름은 형식에서 일치하지 않습니다.
Array_change_key_case () 자체는 다차원 배열을 지원하지 않으므로 중첩 구조를 처리하기 위해 재귀 기능을 캡슐화해야합니다.
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
// 시뮬레이션 GraphQL 인터페이스 획득 JSON 데이터
$json = '{
"data": {
"ArticleList": [
{
"ID": 101,
"Title": "PHP Array Tricks",
"Author": {
"Name": "John Doe",
"Email": "john@example.com"
}
}
]
}
}';
$data = json_decode($json, true);
// 통합 키 이름을 소문자로 사용하는 사용자 정의 기능을 호출
$normalizedData = change_keys_case_recursive($data, CASE_LOWER);
// 출력 결과
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
)
)
)
)
)
보시다시피, 모든 키 이름은 소문자로 변환되며, 이는 후속 데이터 처리 및 템플릿 렌더링에 더 도움이됩니다.
GraphQL API에 의해 반환 된 데이터를 처리하고 Array_change_key_case () 와 재귀 로직을 결합하면 상부 및 소문자에서 키 이름의 균일 성을 쉽게 달성하기가 쉽습니다. 이러한 표준화 된 처리는 코드의 가독성을 향상시킬뿐만 아니라 사례 불일치로 인한 잠재적 버그를 피합니다. 프로젝트 요구에 따라 키 이름을 소문자 또는 대문자로 변환하고 유연하게 조정할 수 있습니다.