2010-02-23 33 views
7

Giải thích cho cú pháp sau là gì?

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

Cảm ơn tất cả các câu trả lời! – eft

Trả lời

17

Bạn đang gọi điện cho một tài sản trên $var1 được đặt tên giống với giá trị $var2.

Ví dụ:

$var2 = "name"; 

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

$var1 là một đối tượng.

$var2 là (có thể) tên của một biến bên trong $var1.

Nếu $var2="test"; này được đánh giá để:

$var1->test; 

Bạn có thể làm điều này với tất cả các loại điều:

$test = array(); 
$name="test"; 
print_r($$name); // Prints array(); 

$test = new stdClass; 
$test->hello = "hi"; 
$name2="hello"; 
echo $test->$name2; // Echos hi 

Bạn thậm chí có thể nhận được thực sự ưa thích:

echo $$name->$name2; // Echos hi 
+1

Dấu hiệu đô la đôi có gì? – CodyBugstein

+0

@Imray http://php.net/manual/en/language.variables.variable.php –

+0

Bạn có thể đưa một ví dụ về việc nhận/đăng với người khác không? –

2

Nó có nghĩa là truy vấn động một thuộc tính trong một đối tượng.

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); 

nên $var1 là một thể hiện của một số đối tượng, -> nghĩa quyền truy cập vào một thành viên của đối tượng đó và $var2 chứa tên của một bất động sản.

Các vấn đề liên quan