현재 위치: > 최신 기사 목록> Array_change_key_case ()가 객체 (stdclass)에 작동합니까?

Array_change_key_case ()가 객체 (stdclass)에 작동합니까?

M66 2025-04-28

PHP에서 Array_change_key_case () 는 배열의 키 이름을 모든 소문자 또는 모든 대문자로 빠르게 변환하는 매우 실용적인 기능이며, 특히 외부 데이터 (예 : API 리턴)를 처리 할 때 데이터 형식을 통합하는 데 종종 사용됩니다. 그러나이 함수는 STDClass 객체에서 직접 사용할 수 있습니까? 이 기사는이 문제를 함께 탐색하게 할 것입니다.

array_change_key_case () 란 무엇입니까?

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
)

stdclass 란 무엇입니까?

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에 직접 사용할 수 있습니까?

대답은 다음과 같습니다. 직접 사용할 수 없습니다 . 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 데이터를 처리 할 때, 특히 외부 인터페이스와 연결할 때 매우 일반적으로 사용되며, 일관되지 않은 필드 케이스로 인한 많은 버그를 피할 수 있습니다.