如何在php中访问名为变量的对象属性?
用JSON编码的Google API返回如下对象如何在php中访问名为变量的对象属性?,php,json,google-api,Php,Json,Google Api,用JSON编码的Google API返回如下对象 [updated] => stdClass Object ( [$t] => 2010-08-18T19:17:42.026Z ) 有人知道我如何访问$t值吗 $object->$t显然返回 注意:未定义的变量:tin/usr/local/ 致命错误:无法访问/…中的空属性 由于属性的名称是字符串“$t”,因此可以按如下方式访问它: echo $object->{'$t'}; $property_name = '$t';
[updated] => stdClass Object
(
[$t] => 2010-08-18T19:17:42.026Z
)
有人知道我如何访问$t
值吗
$object->$t
显然返回
注意:未定义的变量:t
in/usr/local/
致命错误:无法访问/…中的空属性
由于属性的名称是字符串
“$t”
,因此可以按如下方式访问它:
echo $object->{'$t'};
$property_name = '$t';
echo $object->$property_name;
或者,您可以将属性的名称放入变量中,并按如下方式使用:
echo $object->{'$t'};
$property_name = '$t';
echo $object->$property_name;
您可以在repl.it上看到这两个选项的作用:您是否尝试过:
$t = '$t'; // Single quotes are important.
$object->$t;
我正在使用php7,以下功能对我来说很好:
class User {
public $name = 'john';
}
$u = new User();
$attr = 'name';
print $u->$attr;
正确答案(也适用于PHP7)是:
这适用于PHP5和PHP7
$props=get_object_vars($object);
echo $props[$t];
如果只使用“echo$object->$property_name”而不使用引号会怎么样。似乎有效,但它仅适用于较新的php版本吗?@Larry在OP中需要引号,因为
$t
是属性名称,而不是包含属性名称的变量。四年后,我意识到我误读了@Lamy comment。你说得对,拉米。如果$property\u name
的值是字符串'$t'
,则echo$object->$property\u name
可以正常工作。我已经更新了我的答案。谢谢和道歉!你好我可以用这个答案,但只能用双引号,@JordanRunning-你确定用单引号是正确的吗?有记录的行为:有一些重要的注释,请阅读;)如果变量只是属性名的一部分,该怎么办?例如,有没有一种方法可以像$obj->{“$field”{u id'}
这样做?刚刚发现,使用$obj->{“{$field}”{id'}
这是绝对可能的。看起来很可怕,但它100%有效。