echo $array[$wert_tbl]; Variable in Variable??!
simon
- php
Hallo Forum!
Wie löse ich es am besten, wenn ich in einem echo-ausdruck eine variable von einer anderen abhängig machen möchte?!
der einfachere Fall ist ja noch der:
<? echo "blabla".$data[name_tbl]."blabla"; ?>
aber wenn nun der 'name' sprich ein Teil des Array-Index aus einer Variable kommen soll... ? (btw: nein, ich kann leider nicht den gesamten array-index aus einer Variable holen. zumindest wäre es so aufwändig wie eine reihe weiterer 'unangenehmener' lösungs(um)wege)
hilft mir da der befehl "eval()" weiter?
ganz liebe grüße,
simon
Hallo simon,
<? echo "blabla".$data[name_tbl]."blabla"; ?>
Das ist aus drei Gründen schon mal nicht so toll. Erstens verwendest Du short tags - die solltest Du vermeiden. Zweitens solltest Du Zeichenketten immer quoten, auch wenn sie als Schlüssel für einen assoziativen Array verwendet werden - besser $data['name_tbl']. Und drittens solltest Du doppelte Anführungszeichen nur verwenden, wenn Du bestimmte Ersetzungen wirklich brauchst - nur für "blabla" ist es besser einfache Anführungszeichen zu nehmen. (dort werden keine Variablen und Zeichen ersetzt - ist geringfügig schneller, das summiert sich aber bei vielen Zeichenketten)
aber wenn nun der 'name' sprich ein Teil des Array-Index aus einer Variable kommen soll... ?
Der Schlüssel eines assoziativen Arrays ist nichts anderes als eine stinknormale Zeichenkette, die Du Dir auch problemlos zusammenbasteln kannst:
<?php echo 'blabla'.$data[$name.'_tbl'].'blabla'; ?>
oder alternativ
<?php echo 'blabla'.$data["{$name}_tbl"].'blabla'; ?>
hilft mir da der befehl "eval()" weiter?
Könntest Du auch machen - wäre aber sicherheitstechnisch bedenklich und außerdem verbrätst Du da Rechenleistung.
Christian
Hi,
hilft mir da der befehl "eval()" weiter?
Könntest Du auch machen - wäre aber sicherheitstechnisch bedenklich und außerdem verbrätst Du da Rechenleistung.
Bei eval wird die Ersetzung erst mit dem Aufruf durchgeführt, eben so, wie bei einer Funktion. Ohne eval() wird die Ersetzung so für durchgeführt, wie möglich. Das ist bei SQL-Statements wichtig, die eigentlich immer gleich aussehen, aber deren Teile aus Variablen kommen.
Wenn man die einfach in einen String stopft und nachher nur den String als Statement übergibt, kommen meistens falsche Ergebnisse dabei heraus. Die Ersetzung ist nämlich in dem Moment durchgefürht worden, als die Zuweisung der Variablen an den String ausgewertet wurde.
Liebe Grüße aus http://www.braunschweig.de
Tom