PHP $variable$n in for() - (gelöst)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
xcomm
Beiträge: 804
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

PHP $variable$n in for() - (gelöst)

Beitrag von xcomm » 27.03.2008 09:18:54

Hi Gemeinde,

ich möchte Variablennamen mit dem Zähler einer For-Schleife hochzählen, wie macht man sowas in PHP?

Code: Alles auswählen

for ($n = 1; $n <= 10; $n++){
   echo $n;
   $foo$n=isset($_GET['foo$n'])?$_GET['foo$n']:"0";
}
Vielen Dank!
Regards, xcomm[quote][/quote]
Zuletzt geändert von xcomm am 27.03.2008 21:28:01, insgesamt 1-mal geändert.

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 27.03.2008 11:00:45

Fast, so sollte es klappen:

Code: Alles auswählen

for ($n = 1; $n <= 10; $n++){
   echo $n;
   $varname = 'foo'.$n;
   $$varname = isset($_GET["foo$n"])?$_GET["foo$n"]:"0";
}
Aber eine andere Frage: Warum tust du das? Das produziert schwer wartbaren und unübersichtlichen code, ganz zu schweigen davon, dass es erlaubt, von extern variablen zu initialisieren. Das kann schnell gefährlich werden.
Perl macht Spass.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 27.03.2008 11:55:10

http://de.php.net/foreach

ist eher was du nutzen moechtest denke ich.

ausserdem solltest du schauen das $_GET["foo$n"] entweder getypcasted wird oder gefiltert.
uebergibst du wirklich 10 werte per GET?

Benutzeravatar
xcomm
Beiträge: 804
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

Beitrag von xcomm » 27.03.2008 21:27:31

Hallo HELLinG3R, hallo startx,

danke für den Tip mit den Anführungszeichen, dynamischen Variablen und mit Foreach! :-)

Natürlich habt Ihr auch mit Euren restlichen Hinweisen gut geholfen.

Die Sicherheits- und Wartungsbedenken sind sicher berechtigt, aber es handelt sich nur um eine kleine, interne Schnittstelle. Wer die Rechte und das Vertrauen hat diese zu benutzen, darf eh schon alles ändern. ;-)

Beste Grüße, xcomm

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 28.03.2008 08:33:05

xcomm hat geschrieben:Die Sicherheits- und Wartungsbedenken sind sicher berechtigt, aber es handelt sich nur um eine kleine, interne Schnittstelle. Wer die Rechte und das Vertrauen hat diese zu benutzen, darf eh schon alles ändern. ;-)
Das Argument finde ich nicht sonderlich gut.
In zwei jahren darf jeder daran rumfrickeln und entsprechenden Mist anstellen...
Auch wenns nur sehr intern ist, sollte man nicht einfach einen wilden Hack machen.

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 28.03.2008 09:17:12

foreach hin- oder her - für mich sieht das danach aus, auf register_globals=off ein register_globals=on zu realisieren - was natürlich fatal sein kann.
Besser ist es, im code direkt auf $_GET zuzugreifen, z.b. per foreach, wie startx schon sagte.

for ist übrigens schneller als foreach, was gerade bei sehr häufigen Aufrufen (du schreibst von interner Schnittstelle) die performance verschlechtern kann.
Perl macht Spass.

Antworten