> 백엔드 개발 > PHP 튜토리얼 > `json_decode()`를 사용하여 PHP에서 유효하지 않거나 숫자 속성 이름을 가진 객체에 어떻게 액세스할 수 있습니까?

`json_decode()`를 사용하여 PHP에서 유효하지 않거나 숫자 속성 이름을 가진 객체에 어떻게 액세스할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-18 08:16:15
원래의
764명이 탐색했습니다.

How Can I Access Objects with Invalid or Numeric Property Names in PHP Using `json_decode()`?

PHP를 사용하여 유효하지 않거나 숫자 속성 이름이 있는 객체에 액세스

JSON 데이터를 구문 분석하기 위해 PHP에서 json_decode() 함수를 활용하려고 할 때 , 이름이 정수인 속성에 액세스하는 데 어려움이 있거나 유효한 변수 명명 규칙을 준수하지 못할 수 있습니다. 이 동작은 해당 속성이 있는 객체를 처리할 때 PHP의 고유한 제한에서 비롯됩니다.

제한 사항 및 특이사항

  1. 숫자 속성 이름:
    숫자 이름(앞의 $ 기호 없이)이 있는 속성에 직접 액세스하려고 하면 구문이 발생합니다. error.
  2. 중괄호 구문:
    잘못된 이름이 있는 속성은 중괄호 구문을 사용하여 액세스할 수 있지만 이름 전체가 숫자로 구성되지 않은 경우에만 가능합니다.
  3. 객체의 출처:
    배열에서 직접 생성된 객체는 다음을 사용하여 숫자 속성에 계속 액세스할 수 있습니다. 기술적으로 유효하지 않은 중괄호 구문.

솔루션

솔루션 #1: 수동 Typecasting

유효하지 않은 속성에 액세스하려면 개체를 배열로 수동으로 캐스팅하세요. 이름:

$a = array('123' => '123', '123foo' => '123foo');
$o = (object) $a;
$a = (array) $o;
echo $a['123']; // OK!
로그인 후 복사

해결책 #2: Nuclear 옵션

재귀 함수를 사용하여 객체를 배열로 변환:

function recursive_cast_to_array($o) {
    $a = (array) $o;
    foreach ($a as &$value) {
        if (is_object($value)) {
            $value = recursive_cast_to_array($value);
        }
    }

    return $a;
}

$arr = recursive_cast_to_array($myVar);
$value = $arr['highlighting']['448364']['Data']['0'];
로그인 후 복사

해결책 #3: JSON 함수

배열로의 재귀 변환을 위해 내장된 JSON 함수를 활용하세요.

$arr = json_decode(json_encode($myVar), true);
$value = $arr['highlighting']['448364']['Data']['0'];
로그인 후 복사

요구 사항에 가장 적합한 솔루션을 선택하기 전에 각 솔루션의 단점을 고려하는 것이 중요합니다. . 예를 들어 솔루션 #2와 #3은 불필요한 배열 변환을 수행하는 반면, 솔루션 #3은 문자열 속성을 UTF-8로 인코딩해야 합니다.

위 내용은 `json_decode()`를 사용하여 PHP에서 유효하지 않거나 숫자 속성 이름을 가진 객체에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿