Dynamische Variable
Hugo Egon Balder
- php
0 Jeremy0 MudGuard0 Gustav Gans0 Længlich
Hallo Forum,
ich schaffe es, einen Variablennamen dynamisch zusammenzustellen.
$foo=array('eins','bloob','bar');
${test.$foo[2]}=3;
// Ergibt die Variable 'testbar' mit dem Wert '3'.
Nun möchte ich ein $_POST dynamisch zusammenstellen, schaffe das aber nicht.
Ich beginne wieder mit einem Array:
$foo=array('eins','bloob','bar');
Dynamisch generiert werden soll jetzt ein $_POST mit dem zweiten Array-Wert. Also sowas in der Art wie $content=${_POST['.$foo[1].']}
. Als ob $content=$_POST['bloob']
dortstehen würde.
Das funktioniert aber nicht. Es kommt die Fehlermeldung "Parse error: syntax error, unexpected '[' in ..." Und alle anderen möglichen Variationen mit Punkten und geschweiften Klammern bringen auch Fehlermeldungen.
Meine Frage: Ist es möglich, nicht nur normale Variablen, dondern auch ein $_POST dynamisch zu generieren und wenn ja, wie muß der Code dann lauten?
Danke im Voraus und mfG
Hugo E.B.
Hallo!
Meine Frage: Ist es möglich, nicht nur normale Variablen, dondern auch ein $_POST dynamisch zu generieren und wenn ja, wie muß der Code dann lauten?
Da ich hier nicht die Möglichkeit habe, den Code selber zu testen, kann ich nur fragen, ob du es mal mit Escapen versucht hast?
Liebe Grüße aus Norddeutschland.
Hi,
ich schaffe es, einen Variablennamen dynamisch zusammenzustellen.
Wozu?
Anstelle dynamischer Variablennamen bietet sich in PHP (fast) immer die Verwendung eines Arrays an.
Nun möchte ich ein $_POST dynamisch zusammenstellen, schaffe das aber nicht.
Weil Du viel zu komplizert denkst - weil Du in dynamischen-Variablennamen denkst.
$foo=array('eins','bloob','bar');
Dynamisch generiert werden soll jetzt ein $_POST mit dem zweiten Array-Wert. Also sowas in der Art wie$content=${_POST['.$foo[1].']}
. Als ob$content=$_POST['bloob']
dortstehen würde.
Also $_POST[$foo[1]]
cu,
Andreas
Hi Andreas,
Weil Du viel zu komplizert denkst - weil Du in dynamischen-Variablennamen denkst.
Also $_POST[$foo[1]]
Völlig richtig, ich bin vor 1 Minute drauf gekommen und wollte es gerade posten, dass ich unnötig um 3 Ecken gedacht habe.
Anstelle dynamischer Variablennamen bietet sich in PHP (fast) immer die Verwendung eines Arrays an.
Wie genau meintest Du diesen Satz jetzt? *kopfkratz*
MfG
Hugo E.B.
Kelmad laysku salaamo!
Anstelle dynamischer Variablennamen bietet sich in PHP (fast) immer die Verwendung eines Arrays an.
Wie genau meintest Du diesen Satz jetzt? *kopfkratz*
Die Verwendung von variablen Variablen ist fast immer ein Anzeichen unsauberer Programmierung. Überlege Dir, wie Du Dein Vorhaben in einer Sprache umsetzen würdest, die keine variablen Variablen unterstützt (so gut wie sicher mit Arrays). Und diese andere Umsetzung ist mit sehr, sehr hoher Wahrscheinlichkeit besser (weil leichter lesbar und damit besser wartbar und weniger fehleranfällig).
Viele Grüße vom Længlich
Hi,
ich kann mir noch immer nichts drunter vorstellen. Kann ich ein praktisches Beispiel anhand eines PHP Codes haben bitte?
MfG
Hugo E.B.
Hi!
ich kann mir noch immer nichts drunter vorstellen. Kann ich ein praktisches Beispiel anhand eines PHP Codes haben bitte?
Bitteschön: Variable Variablen
In deinem Fall brauchst du aber keine variablen Variablen. Du wolltest einfach nur statt eines Strings den Inhalt einer Variablen als Key verwenden. Vielleicht kennst du das Prinzip ja schon vom Iteration über ein Array.
$array = array(0, 8, 15, 23, 42);
for ($i = 0; $i < count($array); $i++)
echo $array[$i];
Lo!
Hi,
Bitteschön: <http://de.php.net/manual
Sorry, aber ich weiß, was variable Variablen sind, siehe die Einleitung meines Originalpostings.
In deinem Fall brauchst du aber keine variablen Variablen. Du wolltest einfach nur statt eines Strings den Inhalt einer Variablen als Key verwenden.
Wenn du damit meinst, dass ich statt einem fix definierten $_POST['irgendwas'> das 'irgendwas' flexibel bestimmen möchte, dann ja.
Vielleicht kennst du das Prinzip ja schon vom Iteration über ein Array.
$array = array(0, 8, 15, 23, 42);
for ($i = 0; $i < count($array); $i++)
echo $array[$i];
OK, so gibt man alle Teile eines Arrays aus. Was aber hat das jetzt mit variablen Variablen zu tun? Ich verstehe auch Længlich's Aussage nicht:
Die Verwendung von variablen Variablen ist fast immer ein Anzeichen unsauberer Programmierung.
Wieso? Und warum gibt es sie dann?
Überlege Dir, wie Du Dein Vorhaben in einer Sprache umsetzen würdest, die keine variablen Variablen unterstützt (so gut wie sicher mit Arrays).
Wie gesagt, ohne ein konkretes Beispiel kann ich mit so Phrasen nichts anfangen.
MfG
Hugo E.B.
PS: Falls es dich interessiert, wieso ich das mit dem $_POST überhaupt gebraucht habe: Ich habe ein Formular mit mehreren Eingebefeldern, deren Eingaben allesamt überprüft werden. Um den Code ganz klein und übersichtlich zu halten, habe ich das so gelöst: Ich habe eine EINZIGE Überprüfungsdatei, in der alle Überprüfungsroutinen drin stehen. Für jedes Eingabefeld brauche ich jetzt nur noch 2 Zeilen, nämlich das include für die Überprüfungsdate und ein Array, mit dem ich der Überprüfungsdatei sage, was sie überprüfen soll und was nicht. (Das erste Element zB sagt bei 0, dass ein Feld auch leer bleiben darf, 1 bedeutet, es darf nicht leer bleiben. Und so weiter...) Das letzte Element dieses Arrays ist jeweils der Name des Eingabefeldes. Die Überprüfungsdatei macht daraus dann ein $_POST, um überhaupt zum zu überprüfenden Stringinhalt kommen zu können.
Hi!
OK, so gibt man alle Teile eines Arrays aus. Was aber hat das jetzt mit variablen Variablen zu tun? Ich verstehe auch Længlich's Aussage nicht:
Dein Versuch sah so aus, als ob du variable Variablen verwenden willst. Das willst du aber gar nicht, sondern hat nur fälschlicherweise deren Syntax verwendet. Vergiss die VV also in Bezug auf dein Problem. Du möchtest einfach nur einen variablen Wert als Array-Key verwenden.
Die Verwendung von variablen Variablen ist fast immer ein Anzeichen unsauberer Programmierung.
Wieso? Und warum gibt es sie dann?
Man kann mit jedem Feature unsauber programmieren, trotzdem gibt es sie. VVs sind jedoch prädestiniert für falsche Anwendung seitens der Noch-nicht-Wissenden. Sie legen damit gern Variablen wie beispielsweise $foo1 bis $foo42 an. Damit sie dann auf deise Variablen zugreifen können, nehmen sie VV.
$bar = 'foo' . $i;
echo $$bar;
Stattdessen ist es besser ein Array zu verwenden
$bar = array();
echo $bar[$i];
Damit hat man alles in einer Variablen und nicht in vielen. Ein Array lässt sich viel besser rumreichen als ein Bündel einzelner Variablen.
PS: Falls es dich interessiert, wieso ich das mit dem $_POST überhaupt gebraucht habe: Ich habe ein Formular mit mehreren Eingebefeldern, deren Eingaben allesamt überprüft werden. Um den Code ganz klein und übersichtlich zu halten, habe ich das so gelöst: Ich habe eine EINZIGE Überprüfungsdatei, in der alle Überprüfungsroutinen drin stehen. Für jedes Eingabefeld brauche ich jetzt nur noch 2 Zeilen, nämlich das include für die Überprüfungsdate und ein Array, mit dem ich der Überprüfungsdatei sage, was sie überprüfen soll und was nicht. (Das erste Element zB sagt bei 0, dass ein Feld auch leer bleiben darf, 1 bedeutet, es darf nicht leer bleiben. Und so weiter...) Das letzte Element dieses Arrays ist jeweils der Name des Eingabefeldes. Die Überprüfungsdatei macht daraus dann ein $_POST, um überhaupt zum zu überprüfenden Stringinhalt kommen zu können.
Darauf könnte ich jetzt auch antworten:
Wie gesagt, ohne ein konkretes Beispiel kann ich mit so Phrasen nichts anfangen.
Mach ich aber nicht. :-)
Lo!