2012-03-28 13 views
0

Ich möchte in der Lage sein, eine Zeichenfolge ("['parent_array'] ['child_array']") an eine Funktion zu übergeben, die dann diese Zeichenfolge und "my_array" an die Vorderseite zieht und erstellt dann eine variable Variable.Variablenvariable, Erstellen einer Arrayvariable

Dann innerhalb der Funktion ich print_r ($$ Zeichenfolge) und nichts kommt heraus. Siehe den Code unten für eine bessere Erklärung.

// DOES NOT WORK 
$string1 = "my_array['parent_array']['child_array']"; 
print_r($$string1); //prints nothing. 

// WORKS 
$string2 = "test"; 
$test = "This will be printed!"; 
print_r($$string2); //prints "This will be printed! 

// WORKS 
print_r($my_array['parent_array']['child_array']); 
+2

Darf ich fragen, warum diese Art und Weise die Variablen bauen? Ich könnte eine große Geldsumme wetten, weil es einen vernünftigeren Ansatz gibt als * (Schaudern) * variable Variablen. – JJJ

+2

und/oder eval, ich wette, eine der Antworten würde später empfehlen, Eval zu verwenden. –

+2

@andreas Gesagt, getan ... – JJJ

Antwort

0

Variable Variablen sind ein hässlicher, hässlicher Hack.

Verwenden Sie eval.

Beispiel:

$expr = "\$my_array['parent_array']['child_array']"; 
$val = 'not assigned'; 
eval("\$val = $expr;"); 
print_r($val); 

Aber bitte ihre Warnungen über die Gefahr von evaling Benutzer gelieferten Code folgen.

Aktualisiert: mit Beispiel

+0

Kann ich ein Beispiel bekommen, wie das aussehen würde? – halliewuud

+2

Beide sind hässliche Hacks IMHO. Fast immer gibt es eine bessere Lösung. Die eigentliche Frage an OP wäre: Warum denkst du, dass du es brauchst? – PeeHaa

+0

@RepWhoringPeeHaa siehe hier: http://pastebin.com/bBS4iiMC Ich möchte in der Lage sein, eine Variable an die Funktion übergeben, die "line29 ersetzt. $ ArrXml ['Zuweisungen'] ['Zuweisung']" – halliewuud