以下语法的解释是什么?
$var1->$var2 // Note the second $
$var2
的值与$var1
属性同名的属性。
例如:
$var2 = "name";
// The following are equivalent
$var1->name;
$var1->$var2;
$var1
是一个对象。
$var2
可能是 $var1
中的一个变量名。
如果 $var2="test";
,则被评估为:
$var1->test;
你可以用各种方式来实现这个:
$test = array();
$name="test";
print_r($$name); // Prints array();
$test = new stdClass;
$test->hello = "hi";
$name2="hello";
echo $test->$name2; // Echos hi
你甚至可以变得非常花哨:
echo $$name->$name2; // Echos hi
class A {
public $a;
}
// static property access
$ob = new A;
$ob->a = 123;
print_r($ob);
// dynamic property access
$prop = 'a';
$ob->$prop = 345; // effectively $ob->a = 345;
print_r($ob);
$var1
是某个对象的实例,->
表示访问该对象的成员,$var2
包含属性的名称。
$foo="bar"
并且$bar="biz"
,那么$$foo
将返回"biz"
,因为双美元符号告诉计算机获取变量名为foo
值的变量。基本上,在$$foo
中,在你的脑海中将$foo
替换为bar
,你就得到了$bar
。请注意,在你的脑海中替换后,$bar
中的$
是$$foo
中保留的第一个$
。https://dev59.com/lnE85IYBdhLWcg3wkkU8 - Abraham Murciano Benzadon