PHP에서 Array_change_key_case () 는 배열의 키 이름을 모든 소문자 또는 모든 대문자로 빠르게 변환하는 매우 실용적인 기능이며, 특히 외부 데이터 (예 : API 리턴)를 처리 할 때 데이터 형식을 통합하는 데 종종 사용됩니다. 그러나이 함수는 STDClass 객체에서 직접 사용할 수 있습니까? 이 기사는이 문제를 함께 탐색하게 할 것입니다.
Array_change_key_case ()는 배열을 가져 와서 모든 키 이름을 소문자 또는 대문자로 변환합니다.
$data = [
"Name" => "Alice",
"AGE" => 25
];
$lowercase = array_change_key_case($data, CASE_LOWER);
print_r($lowercase);
출력 결과 :
Array
(
[name] => Alice
[age] => 25
)
PHP에서 STDClass 는 가장 일반적으로 사용되는 익명 객체 유형입니다. 예를 들어, JSON_DECODE ()을 통해 JSON 문자열을 디코딩 할 때 두 번째 매개 변수가 TRUE가 전달되지 않으면 기본적으로 stdClass 객체가 반환됩니다.
$json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);
print_r($obj);
출력 결과는 다음과 유사합니다.
stdClass Object
(
[Name] => Alice
[AGE] => 25
)
대답은 다음과 같습니다. 직접 사용할 수 없습니다 . Array_change_key_case ()는 배열을 입력 매개 변수로 만 허용합니다. stdClass 객체를 전달하려고하면 경고 나 오류가 발생합니다.
예:
$json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);
$result = array_change_key_case($obj, CASE_LOWER);
산출:
Warning: array_change_key_case() expects parameter 1 to be array, object given
따라서 객체를 먼저 배열로 변환 한 다음 기능을 사용해야합니다.
유형 변환 또는 get_object_vars ()를 사용하여 stdClass를 배열로 변환 할 수 있습니다.
$json = '{"Name": "Alice", "AGE": 25}';
$obj = json_decode($json);
// 방법 1:변환을 입력하십시오
$arr = (array) $obj;
// 방법 2:get_object_vars()
$arr2 = get_object_vars($obj);
// 사용 array_change_key_case
$lowercase = array_change_key_case($arr, CASE_LOWER);
print_r($lowercase);
산출:
Array
(
[name] => Alice
[age] => 25
)
최종 결과를 객체로 변환 해야하는 경우 다음을 수행 할 수 있습니다.
$lower_obj = (object) $lowercase;
print_r($lower_obj);
결과:
stdClass Object
(
[name] => Alice
[age] => 25
)
인터페이스에서 사용자 데이터를 받고 있다고 가정합니다 (예 : https://api.m66.net/user/info ) :
$response = file_get_contents('https://api.m66.net/user/info');
$data = json_decode($response); // 기본값입니다 stdClass
$normalized = array_change_key_case((array) $data, CASE_LOWER);
print_r($normalized);
이런 식으로, 인터페이스에 의해 반환 된 필드가 대문자, 소문자 또는 혼합 여부에 관계없이 필요한 형식으로 균일하게 처리 할 수 있습니다.
Array_change_key_case ()는 배열에서만 사용할 수 있습니다.
STDClass는 먼저 배열로 변환되어야합니다.
변환 후이 기능을 호출하는 것이 좋습니다.
처리 후 필요한 경우 객체로 돌아갈 수도 있습니다.
이 트릭은 JSON 데이터를 처리 할 때, 특히 외부 인터페이스와 연결할 때 매우 일반적으로 사용되며, 일관되지 않은 필드 케이스로 인한 많은 버그를 피할 수 있습니다.