>백엔드 개발 >PHP 튜토리얼 >PHP에서 유효하지 않거나 정수 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?

PHP에서 유효하지 않거나 정수 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-21 19:25:21965검색

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

정수나 유효하지 않은 속성 이름과 같은 이름을 사용하여 객체 속성에 어떻게 액세스할 수 있나요?

PHP에서 JSON을 디코딩하면 객체가 생성되는 경우가 많습니다. 이름이 잘못된 속성이 있습니다. 이러한 불일치로 인해 표준 개체 구문을 사용하여 이러한 속성에 액세스하기가 어렵습니다.

유효한 이름으로 속성에 액세스>

유효한 변수 이름이 있는 속성은 점 표기법을 사용하여 액세스할 수 있습니다. :

$data = '{ "name": "John Doe" }';
$obj = json_decode($data);
echo $obj->name; // Output: John Doe

잘못된 속성에 액세스 이름

정수 또는 기타 유효하지 않은 이름으로 속성에 액세스하는 것은 그리 간단하지 않습니다. PHP에는 오류를 일으킬 수 있는 몇 가지 특이한 점이 있습니다.

  • PHP 7.2 이상에서는 중괄호 구문을 사용하여 숫자 속성에 액세스할 수 있습니다.
$data = '{ "42": "The Answer" }';
$obj = json_decode($data);
echo $obj->{'42'}; // Output: The Answer
  • 그러나 모두 숫자로 된 속성 이름, 이 구문은 여전히 실패:
$data = '{ "123": "Three Digits" }';
$obj = json_decode($data);
echo $obj->{'123'}; // Error: syntax error
  • 객체가 배열에서 파생되지 않은 경우 위 규칙에 대한 예외가 발생합니다.
$obj = new stdClass;
$obj->{'123'} = 'Three Digits';
echo $obj->{'123'}; // Output: Three Digits

실용적 솔루션

잘못된 이름으로 속성에 액세스하려면 다음을 고려하세요. 옵션:

  • 수동으로 배열로 캐스팅:
$obj = json_decode($data);
$arr = (array) $obj->highlighting;
$value = $arr['448364']['Data']['0'];
  • 재귀 배열 캐스팅:
function recursive_cast_to_array($obj) {
    $arr = (array) $obj;
    foreach ($arr as &$value) {
        if (is_object($value)) {
            $value = recursive_cast_to_array($value);
        }
    }
    return $arr;
}

$arr = recursive_cast_to_array($obj);
$value = $arr['highlighting']['448364']['Data']['0'];
  • JSON 함수 사용:
$arr = json_decode(json_encode($obj), true);
$value = $arr['highlighting']['448364']['Data']['0'];

JSON 함수에는 UTF-8이 필요합니다. 모든 문자열에 대한 인코딩

위 내용은 PHP에서 유효하지 않거나 정수 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.