2010-02-23 3 views
7

В чем объясняется следующий синтаксис?

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

Спасибо за все ответы! – eft

ответ

17

Вы вызываете свойство на $var1, которое имеет то же значение, что и значение $var2.

Например:

$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

+0

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

+0

Можете ли вы привести пример get/post с else? –

2

It означает динамически запрашивать свойство в объекте.

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 содержит имя свойства.

Смежные вопросы