2010-02-23 674 views
7

以下语法的解释是什么?

$var1->$var2 // Note the second $ 
+0

感谢所有的答案! – eft 2010-02-23 06:00:50

回答

17

您正在致电$var1上与的值相同的属性。

例如:

$var2 = "name"; 

// The following are equivalent 
$var1->name; 
$var1->$var2; 
9

$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 
+1

什么是双美元符号? – CodyBugstein 2013-03-17 22:18:15

+0

@Imray http://php.net/manual/en/language.variables.variable.php – 2013-03-18 04:04:21

+0

你可以用一个else包含一个get/post的例子吗? – 2015-11-07 20:27:05

2

它意味着动态查询对象中的属性。

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包含一个属性的名称。