2010-02-23 3 views
7

Was ist die Erklärung für die folgende Syntax?

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

Vielen Dank für die Antworten! – eft

Antwort

17

Sie rufen eine Eigenschaft unter $var1 auf, die denselben Wert wie der Wert $var2 hat.

Zum Beispiel:

$var2 = "name"; 

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

$var1 ist ein Objekt.

$var2 ist (möglicherweise) der Name einer Variablen innerhalb $var1.

Wenn $var2="test"; dies ausgewertet:

$var1->test; 

Sie können mit allen möglichen Dingen tun:

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

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

Sie können auch wirklich Lust bekommen:

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

Was ist mit den doppelten Dollarzeichen? – CodyBugstein

+0

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

+0

Können Sie ein Beispiel für ein get/post mit einem else? –

2

Es bedeutet dynamisch eine Eigenschaft in einem Objekt abfragen.

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

so ist $var1 eine Instanz eines Objekts, bedeutet -> Zugang zu einem Teil des Objekts und $var2 enthält den Namen einer Eigenschaft.