2010-02-23 41 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包含一個屬性的名稱。