매일 개발에서 우리는 종종 타사 인터페이스에서 JSON 데이터를 얻습니다. 그러나 이러한 인터페이스에 의해 반환 된 데이터의 주요 이름의 사례 형식은 일관성이없고 일부는 자본으로 시작하며 일부는 자본 또는 모두 소문자입니다. 이 일관되지 않은 키 이름 형식은 필드 추출, 통합 매핑, 객체로의 배열 변환 등과 같은 후속 데이터 처리에 많은 문제가 발생하여 오류가 발생하거나 길어질 수 있습니다.
다행스럽게도 PHP는 매우 실용적인 기능을 제공합니다 : 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는 대문자로 변환됩니다.
실제 JSON 문자열을 예로 사용하여 상류 및 소문자로 키 이름을 우아하게 통합하는 방법을 보여 주겠습니다.
{
"UserID": 101,
"UserName": "Alice",
"Email": "alice@example.com"
}
보시다시피, 키 이름은 케이스 혼합입니다. 처리 할 때 편의를 위해 모든 것을 소문자 키 이름으로 변환하려고합니다.
<?php
// 이것이 인터페이스에서 나온다고 가정하십시오 https://api.m66.net/user 얻은 데이터
$json = '{
"UserID": 101,
"UserName": "Alice",
"Email": "alice@example.com"
}';
// 첫 번째 단계:할 것이다 JSON 연관 배열로 변환합니다
$data = json_decode($json, true);
// 2 단계:사용 array_change_key_case() 할 것이다键名统一转为小写
$normalized = array_change_key_case($data, CASE_LOWER);
// 출력 처리 된 배열
print_r($normalized);
/*
출력 결과:
Array
(
[userid] => 101
[username] => Alice
[email] => alice@example.com
)
*/
?>
이런 식으로, 우리는 $ 정규화 된 [ 'username'] 및 기타 방법을 사용하여 일관되지 않은 주요 이름의 문제에 대해 걱정하지 않고 값을 얻을 수 있습니다.
JSON은 다층 중첩 구조 인 경우 Array_change_key_case () 만 사용하여 첫 번째 레이어 만 처리 할 수 있으며 모든 레벨을 처리하기 위해 재귀 기능을 캡슐화해야합니다.
function array_keys_to_lower_recursive(array $array): array {
$result = [];
foreach ($array as $key => $value) {
$key = is_string($key) ? strtolower($key) : $key;
$result[$key] = is_array($value) ? array_keys_to_lower_recursive($value) : $value;
}
return $result;
}
사용 방법은 위와 유사합니다.
$normalized = array_keys_to_lower_recursive($data);
JSON 데이터를 처리하고 키 케이스를 통합하려면 array_change_key_case ()는 간단하고 효율적인 도구입니다. 재귀 버전을 사용하면보다 복잡한 데이터 구조를 처리 할 수도 있습니다. 이는 코드의 가독성을 향상시킬뿐만 아니라 유지 보수 비용을 줄입니다.