> 백엔드 개발 > PHP 튜토리얼 > PHP에서 숫자 또는 잘못된 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?

PHP에서 숫자 또는 잘못된 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-25 19:19:10
원래의
260명이 탐색했습니다.

How to Access Object Properties with Numeric or Invalid Names in PHP?

PHP에서 숫자 또는 유효하지 않은 이름을 사용하여 객체 속성에 액세스

PHP에서 JSON 데이터로 작업할 때 정수 또는 유효하지 않은 속성으로 명명된 객체를 만날 수 있습니다. 변수 이름. 이로 인해 표준 점 표기법을 사용하여 이러한 속성에 액세스하는 데 어려움이 있을 수 있습니다.

숫자 키에 대한 구문 오류

json_decode()를 사용하여 JSON 개체가 디코딩되는 다음 예를 고려하세요.

$myVar = json_decode($data);
로그인 후 복사

이렇게 하면 개체가 생성될 수 있습니다. like:

[highlighting] => stdClass Object
    (
        [448364] => stdClass Object
            (
                [Data] => Array
                    (
                        [0] => Tax amount liability is .......
                    )
            )
    )
로그인 후 복사

아래 표시된 것처럼 점 표기법을 사용하여 키 [0]의 문자열 값에 액세스하려고 하면 구문 오류가 발생합니다.

print $myVar->highlighting->448364->Data->0;
로그인 후 복사

문제가 무엇인가요?

숫자 이름은 유효하지 않은 변수 이름으로 간주되므로 PHP는 숫자 이름을 가진 객체 속성에 직접 액세스할 수 없습니다. 이 문제는 PHP가 속성 접근자를 구문 분석하는 방식 때문에 발생합니다.

가능한 해결 방법

옵션 1: 수동 캐스팅

속성에 액세스하려면 다음을 수행하세요. (array)$object를 사용하여 객체를 배열로 수동으로 변환합니다. 이를 통해 배열 키로 숫자 속성에 액세스할 수 있습니다.

$highlighting = (array)$myVar->highlighting;
$data = (array)$highlighting['448364']->Data;
$value = $data['0'];
로그인 후 복사

옵션 2: 중괄호 구문

대체 방법은 중괄호 구문을 사용하여 다음을 수행하는 것입니다. 속성에 액세스합니다. 그러나 이는 속성 이름이 완전히 숫자가 아닌 경우에만 작동합니다.

echo $myVar->highlighting->{'448364'}->Data->0; // OK!
echo $myVar->highlighting->{'123'}->Data->0; // Error!
로그인 후 복사

옵션 3: 재귀 캐스팅 기능

더 강력한 접근 방식은 사용자 정의를 생성하는 것입니다. 객체를 배열로 재귀적으로 변환하는 함수:

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'];
로그인 후 복사

옵션 4: 사용 JSON 함수

또 다른 옵션은 내장된 JSON 함수를 사용하여 객체를 배열로 재귀적으로 변환하는 것입니다.

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

이 접근 방식은 편리하지만 데이터를 UTF-8로 인코딩되었습니다.

위 내용은 PHP에서 숫자 또는 잘못된 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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