variable anzahl von variablen GLOBAL machen?
Adrian
- php
Hi!
Ich will per Post eine anzahl Variablen von einem formular an eine datei übergeben und diese dann dort global machen
die Variablen sind nach demschema feld1 , feld2, feld3,.... benannt....
Ich habe nun versucht eine schleife zu schreiben, um die Variablen global zu machen:
($anzahl wurde auch überliefert und ist schon global)
while ($i<=$anzahl)
{
$feldneu = "$feld".$i;
global $feldneu;
echo "$feldneu <br>";
$i=$i+1;
}
echo"$feldneu"; soll nur der kontrolle dienen...
es funzt net, er sieht $feldneu als string und gibt $feld1, $feld2 etc aus anstatt die werte der variablen...
Wo liegt mein fehler...?
DAnke!
Hallo Adrian,
Ich will per Post eine anzahl Variablen von einem formular an eine datei übergeben und diese dann dort global machen
Schick's per E-Mail *scnr*
...
$feldneu = "$feld".$i;
Der Punkt . ist der Zeichenkettenverknüpfungsoperator und verknüpft hier ganz klar zwei Zeichenketten, warum sollte etwas anderes herauskommen?
es funzt net, er sieht $feldneu als string und gibt $feld1, $feld2 etc aus anstatt die werte der variablen...
Du brauchst variable Variablen
$feldneu enthält '$feld1'
Mit $$feldneu kannst Du auf den Inhalt der Variablen $feld1 zugreifen.
Gruss,
Vinzenz
Du brauchst variable Variablen
*lol*
$feldneu enthält '$feld1'
Mit $$feldneu kannst Du auf den Inhalt der Variablen $feld1 zugreifen.
wie müsste ich das denn schreiben so dass $feldneu der reihe nach auf die einzelvariablen-Inhalte zugreift?
DAnke schonmal!
Hallo Adi,
Du brauchst variable Variablen
*lol*
Die heißen wirklich so :-)
$feldneu enthält '$feld1'
Mit $$feldneu kannst Du auf den Inhalt der Variablen $feld1 zugreifen.
wie müsste ich das denn schreiben so dass $feldneu der reihe nach auf die einzelvariablen-Inhalte zugreift?
Schau mal in Deine while-Schleife. Diese liefert Dir der Reihe nach Deine Variablennamen in der Variablen $feldneu, die also nicht nur zur Kontrolle dient.
Gib mal einfach statt $feldneu $$feldneu aus.
Oder noch besser beides in einer Zeile, durch etwas sinnvolles getrennt.
Gruss,
Vinzenz
Die heißen wirklich so :-)
dan hab ich nix gesagt..
Gib mal einfach statt $feldneu $$feldneu aus.
Oder noch besser beides in einer Zeile, durch etwas sinnvolles getrennt.
Die Schleife:
while ($i<=$anzahl)
{
$feldneu = "$feld".$i;
global $feldneu;
echo "$feldneu enthällt $$feldneu<br>";
$i=$i+1;
}
Das ergebnis:
$feld1 enthällt $$feld1
$feld2 enthällt $$feld2
Hallo Adrian,
Gib mal einfach statt $feldneu $$feldneu aus.
Oder noch besser beides in einer Zeile, durch etwas sinnvolles getrennt.
echo "$feldneu enthällt $$feldneu<br>";
Variablen werden in doppelten Anführungszeichen ausgewertet.
Um auf den Inhalt von $$feldneu zuzugreifen, verwende z.B:
echo "$feldneu enthält ", $$feldneu, "<br>";
oder
echo "$feldneu enthält ${$feldneu}<br>";
http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing.complex
erklärt die 'komplexe Syntax', die nicht komplex ist, sondern komplexe Ausdrücke ermöglicht.
Gruss,
Vinzenz
Moin!
Ich will per Post eine anzahl Variablen von einem formular an eine datei übergeben und diese dann dort global machen
Welche PHP-Version? Bei Version 4.0.x hast du etwas Pech: Du kannst über das Array $GLOBALS auf alle global definierten Variablen zugreifen, dort sollte zum Beispiel drinstehen:
echo $GLOBALS['feld1']; // Inhalt von $feld1
Ab PHP Version 4.1.x gibt es superglobale Variablen für den Datenempfang vom Browser mit GET, POST oder COOKIEs. Sie heißen $_GET, $_POST und $_COOKIE (außerdem gibts noch $_SERVER, ggf. $_FILES bei gesendeten Dateien), und du kannst auf sie aus allen Funktionen heraus global zugreifen.
echo $_POST['feld1']; // Inhalt des Formularfeldes mit Namen "feld1"
Allerdings halte ich eine Sache für bedenklich: Wenn du _gute_ Funktionen schreiben würdest, würdest du es vermeiden, aus der Funktion heraus auf globale Variablen zuzugreifen. Saubere Programmierung funktioniert so, dass du der Funktion alle Werte als Parameter übergibst, und Ergebnisse der Funktion über "return $ergebnis;" wieder zurückgibst.
Das, was du da versuchst, ist schlecht, weil du deine Funktion nur schwer wiederverwenden kannst. Du bist darauf angewiesen, im Hauptprogramm immer die gleichen globalen Variablennamen zu verwenden, ansonsten funktionert deine Funktion nicht. Wenn du Parameter übergibst, ist egal, wie die Variablen global heißen, innerhalb der Funktion haben sie einen eigenen Namensbereich und gelten nur lokal - können also auch keine Konflikte verursachen.
- Sven Rautenberg