JSON 데이터로 작업할 때 개체 속성에 정수 이름이 있거나 잘못된 PHP 변수 이름이 있는 상황이 발생할 수 있습니다. 표준 도트 구문을 사용하여 이러한 속성에 액세스하려고 할 때 문제가 발생할 수 있습니다.
PHP에는 숫자 속성 이름(예: $o- >123). 이는 숫자 속성 이름이 유효한 PHP 변수 이름으로 간주되지 않기 때문입니다.
또한 PHP에는 개체 속성 이름에 대한 제한이 있습니다. 이름에 공백이나 특수 문자(예: $o->foo bar)가 포함된 속성은 점 구문을 사용하여 액세스할 수 없습니다.
이러한 제한 사항을 극복하려면 몇 가지 방법이 있습니다. 옵션:
1. 중괄호 구문:
중괄호 구문: $o->{'123'}, $o->{'foo bar'}를 사용하여 잘못된 속성 이름이 있는 속성에 액세스할 수 있습니다. 이 방법은 속성 이름이 정수인 경우를 제외하면 일반적으로 신뢰할 수 있습니다.
2. 수동 캐스팅:
(array)$o를 사용하여 객체를 배열로 캐스팅할 수 있습니다. 이렇게 하면 $arr['123'], $arr['foo bar']와 같은 배열 키로 속성에 액세스할 수 있습니다. 하지만 이렇게 하면 개체 구조가 평면화된다는 점에 유의하세요.
3. 재귀 함수:
계층 구조를 유지하면서 객체를 배열로 변환하는 재귀 함수(recursive_cast_to_array)를 생성할 수 있습니다.
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)의 배열 표현을 가져옵니다. 객체.
4. JSON 함수:
또는 json_decode 및 json_encode 함수를 사용하여 객체를 PHP 배열로 변환할 수 있습니다: $arr = json_decode(json_encode($myVar), true). 이는 중첩된 개체와 임의의 문자열 값을 지원하는 다목적 방법입니다. 그러나 개체의 모든 문자열은 UTF-8로 인코딩되어야 합니다.
위 내용은 PHP에서 잘못된 이름으로 개체 속성에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!