PHP에서 변수로 명명 된 객체 속성에 어떻게 액세스 할 수 있습니까?


101

JSON으로 인코딩 된 Google API는 다음과 같은 객체를 반환했습니다.

[updated] => stdClass Object
(
 [$t] => 2010-08-18T19:17:42.026Z
)

누구나 $t가치에 액세스 할 수있는 방법을 알고 있습니까?

$object->$t 분명히 반환

알림 : 정의되지 않은 변수 : t/ usr / local / ...

치명적인 오류 : / ....의 빈 속성에 액세스 할 수 없습니다.

답변:


219

속성 이름이 문자열 '$t'이므로 다음과 같이 액세스 할 수 있습니다.

echo $object->{'$t'};

또는 속성의 이름을 변수에 넣고 다음과 같이 사용할 수 있습니다.

$property_name = '$t';
echo $object->$property_name;

repl.it에서이 두 가지를 모두 볼 수 있습니다 : https://repl.it/@jrunning/SpiritedTroubledWorkspace


1
단순히 "echo $ object-> $ property_name"을 따옴표없이 사용하면 어떨까요? 작동하는 것 같지만 최신 PHP 버전에만 해당됩니까?
Lamy

3
때문에 따옴표가 필요한 영업 이익의 경우 @Larry $t 속성의 이름이 아닌 변수를 포함하는 속성의 이름을.
요르단 실행

2
4 년 후 @Lamy 댓글을 잘못 읽었다는 것을 깨달았습니다. 당신 말이 맞아요, 라미. 의 값이 $property_name문자열 '$t'이면 echo $object->$property_name제대로 작동합니다. 내 답변을 업데이트했습니다. 감사합니다. 사과드립니다!
Jordan Running



5

나는 php7을 사용하고 있으며 다음은 나를 위해 잘 작동합니다.

class User {
    public $name = 'john';
}
$u = new User();

$attr = 'name';
print $u->$attr;

0

이것은 PHP 5 및 7에서 작동합니다.

$props=get_object_vars($object);
echo $props[$t];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.