Der Martin: Was bewirkt ein Dollarzeichen mit geschweifter Klammer um Array?

Beitrag lesen

Hallo,

${$array[xyz]}

ach du Sch...
Das bedeutet, im Array $array[] steht der Name der Variablen, die eigentlich angesprochen werden soll. Im einfachsten Fall sieht ein Konstrukt mit variablen Variablen so aus: $$v
Dabei enthält $v einen String, der wiederum als Variablenname interpretiert werden soll.
Wenn aber die Variable, die den Variablennamen enthält, selbst wieder ein Arrayelement, eine Objekteigeschaft oder ein ähnlich komplexer Ausdruck ist, muss sie in geschweifte Klammern gefasst werden, damit der Ausdruck eindeutig ist.

Der Gebrauch von variablen Variablen ist meistens ein Zeichen für einen schweren Designfehler. Üblicherweise kann man dasselbe mit Arrays oder Objekten sehr viel sauberer lösen.

Derzeit arbeite ich an einem Script, welches auf eine andere PHP Version (5) portiert werden soll und scheinbar hakt es da irgendwo.

PHP5 kennt das Konzept aber unverändert. Wie äußert sich das, dass es "hakt"?
Vermutlich bekommst du eine Notice-Meldung, weil du den Index xyz syntaktisch betrachtet als benannte Konstante da stehen hast, die nicht definiert ist - PHP ist dann so gnädig, ihn stattdessen als String zu interpretieren, mault aber berechtigterweise etwas.

Wenn du also sowieso schon an diesem Script rummachen musst, würde ich dir empfehlen, die variablen Variablen auszumisten.

So long,
 Martin

--
Lieber mit Betty im Wald
als mit Waldi im Bett.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(