variable Variablennamen
dey
- php
Hallo,
ich glaube irgendwo gesehen zu haben, dass man auch variable Variablennamen durch concatinieren erzeugen kann
$select_date = array ('dd' => 31,'mm' => 12, 'yy' => 10);
$temp_.$select_date['dd']
ergibt $temp_31
Wie funktioniert das?
bydey
hi,
ich glaube irgendwo gesehen zu haben, dass man auch variable Variablennamen durch concatinieren erzeugen kann
$select_date = array ('dd' => 31,'mm' => 12, 'yy' => 10);
$temp_.$select_date['dd']
ergibt $temp_31Wie funktioniert das?
http://www.php.net/manual/de/language.variables.variable.php
Aber überlege dir, ob du sowas wirklich brauchst.
Gerade Einsteiger scheinen oftmals geradezu besessen von dem Gedanken, alles mögliche in "einzelnen Variablen" stehen haben zu wollen - obwohl Arrays oftmals viel komfortabler zu handhaben sind.
gruß,
wahsaga
Hallo,
Aber überlege dir, ob du sowas wirklich brauchst.
Gerade Einsteiger scheinen oftmals geradezu besessen von dem Gedanken, alles mögliche in "einzelnen Variablen" stehen haben zu wollen - obwohl Arrays oftmals viel komfortabler zu handhaben sind.
Genau! Gut dass Du nochmal drauf hingewiesen hast. :-)
"Arrays" in PHP stellen die einzige praktikable Möglichkeit dar, eigene Datenstrukturen festzulegen und zu kontrollieren. Da es sich bei den Arrays in PHP aber in Wirklichkeit um Baumstrukturen handelt, sind sie auch laufzeitdynamisch. Man kann also zur Laufzeit des Scriptes Elemente anhängen, löschen, einfügen, umbenennen, usw.
Man kann die Elemente zählen, Ihre Reihenfolge manipulieren und nach dem Vorhandensein bestimmter Elemente suchen.
Damit stellen diese varianten Strukturen also schon "variable Variablen" dar.
LG
Chris
Hallo,
noch ein Nachtrag.
Erscheint mir die richtige Stelle dafür zu sein, noch auf die Superglobalen Arrays und den Umgang damit hinzuweisen:
Es besteht grundsätzlich keinerlei Anlass dazu, die Arrays $_GET, $_POST, $_COOKIE, usw. im Script erst in "lose" Scriptvariablen umzukopieren oder ein anderes Array daraus zu bilden. Man kann direkt damit arbeiten und auch in diese Arrays hineinschreiben.
Ich weiß, dass Viele diese Arrays als "schreibgeschützt" ansehen.
Solange man aber weiß, wann man was mit welcher Variable macht, ist selten eine Rendundanz notwendig.
LG
Chris
hi Chris,
Es besteht grundsätzlich keinerlei Anlass dazu, die Arrays $_GET, $_POST, $_COOKIE, usw. im Script erst in "lose" Scriptvariablen umzukopieren oder ein anderes Array daraus zu bilden.
Bis hierhin Ack.
Man kann direkt damit arbeiten und auch in diese Arrays hineinschreiben.
Das halte ich aber für unsauber.
Die Namen dieser Superglobalen bezeichnen schon die Herkunft der Werte - also warum sollte ich ihnen irgendwelche "Kuckuckskinder" unterschieben, die aus anderen Quellen stammen?
Ich weiß, dass Viele diese Arrays als "schreibgeschützt" ansehen.
Wäre vielleicht sogar besser so.
Solange man aber weiß, wann man was mit welcher Variable macht, ist selten eine Rendundanz notwendig.
Die Benennung der Superglobalen dient m.E. mit dazu, dieses Bewusstsein, woher bestimmte Werte stammen, aufrechtzuerhalten.
Dies zu unterwandern, halte ich für wenig sinnvoll.
Könntest du Beispiele nennen, wo du das für sinnvoll oder gar erforderlich halten würdest?
gruß,
wahsaga
hi,
Könntest du Beispiele nennen, wo du das für sinnvoll oder gar erforderlich halten würdest?
Gut, eins fällt mir da gerade selber ein:
Wenn magic_quotes_gpc unglücklicherweise als "on" konfiguriert wäre, könnte ich mir eine Funktion schreiben, die $_GET/$_POST/$_COOKIE durchläuft, alle Inhalte mittels stripslashes() von diesem Unfug befreit - und sie dann wieder unter dem selben Indexnamen in die Arrays zurückschreibt.
gruß,
wahsaga
Hallo Wahsaga,
Könntest du Beispiele nennen, wo du das für sinnvoll oder gar erforderlich halten würdest?
Ja:
da fällt mir bestimmt noch mehr ein.
All diese Dinge macht man sicher in einer wohlüberlegten Reihenfolge und nicht "Kraut und Rüben".
Ich stamme noch aus der Zeit der Assembler-Programmierung. Da hat man Blockbuffer so schnell es ging wiederverwandt. Nun sag nicht: heute hat man genügend Speicherplatz. Ich bin bei PHP schon oft genug an die Grenzen gestoßen, denn was nützt es, wenn _ein_ User genug Platz hat, aber es für zwei schon wieder zu eng wird.
LG
Chris
hi,
Nun sag nicht: heute hat man genügend Speicherplatz.
Würde mir nie in den Sinn kommen :-)
Ernsthaft: Ja, da gebe ich dir Recht - auch heute noch hat ein Programmierer m.E. die Verantwortung, mit den Ressourcen so verantwortungsvoll wie möglich umzugehen. "Wir hamm's ja" war noch nie eine gute Einstellung.
Auf deine genannten Beispiele war ich, abgesehen vom Rücknehmen eventueller überflüssiger Maskierungen, so noch nicht gekommen.
Werde aber mal schauen, ob und wo ich das zukünftig sinnvoll einsetzen kann.
gruß,
wahsaga
Hallo,
Aber überlege dir, ob du sowas wirklich brauchst.
Gerade Einsteiger scheinen oftmals geradezu besessen von dem Gedanken, alles mögliche in "einzelnen Variablen" stehen haben zu wollen - obwohl Arrays oftmals viel komfortabler zu handhaben sind.
Du hast recht. War gedankenlos von mir.
Was hat mich da blos geritten!?
bydey
Hallo,
ich glaube irgendwo gesehen zu haben, dass man auch variable Variablennamen durch concatinieren erzeugen kann
$select_date = array ('dd' => 31,'mm' => 12, 'yy' => 10);
$temp_.$select_date['dd']
ergibt $temp_31Wie funktioniert das?
Das Dollarzeichen weist den Parser an, nicht den Text direkt auszugeben, sondern diesen als Bezeichner aufzufassen. Mittels dieses Bezeichners wird dann in der Variablen- und Funktionentabelle von PHP nachgeschaut, welcher Wert stattdessen benutzt werden soll.
Wenn man nun vor diesen Wert wiederum einen Dollar setzt, wird auch dieser nicht direkt verwendet, sondern das Spiel beginnt von Neuem.
Nun sollte es Dir klar werden, wie es funktioniert.
Außerdem siehe http://de2.php.net/language.variables.variable
LG
Chris