{ } in PHP
skyposter
- php
Kann es sein, dass es in PHP Probleme mit verschachtelten {}-Blöcken gibt?
for($n=1;$n<=$seiten;$n++){
if($n=$_Get['seite']){
echo "[", $n, "]";}
else
{echo "<a href='gaestebuch.php?seite=", $n, "'>[", $n, "]</a> ";}
}
Dieser Quellcode ergibt bei mir eine Endlosschleife.
Hi,
nein, dass kann nicht sein!
Du solltest übersichtlicher codieren, dann hättest Du schneller erkannt, dass Du beim zweiten if eine Zuweisung machst (= statt ==) und damit die Endlos-Schleife selbst produzierst...
for ($n=1; $n<=$seiten; $n++)
{
if ($n = $_Get['seite'])
{
echo "[$n]";
}
else
{
echo "<a href='gaestebuch.php?seite=$n'>[$n]</a>";
}
}
MfG
Danny
HAllo skyposter,
Kann es sein, dass es in PHP Probleme mit verschachtelten {}-Blöcken gibt?
nein.
for($n=1;$n<=$seiten;$n++){
if($n=$_Get['seite']){
echo "[", $n, "]";}
else
{echo "<a href='gaestebuch.php?seite=", $n, "'>[", $n, "]</a> ";}
}
Dieser Quellcode ergibt bei mir eine Endlosschleife.
Du überträgst scheinbar von Perl auf PHP. Z.B. gibts für echo keine mehreren paramter, du musst die strings per "."-Operator zusammenfügen.
Richtig wäre also:
for($n = 1;$n <=$seiten;$n++)
{
if($n = $_GET['seite'])
{
echo "[$n]";
}
else
{
echo "<a href='gaestebuch.php?seite=$n'>[$n]</a>";
}
}
Darüberhinaus weist du $n den Wert von $_GET['seite'] zu. Sicher, dass du nicht nur überprüfen willst, ob $n == $_GET['seite']? Das wird wahrscheinlich der Grund sein.
Das ganze also:
for($n=1;$n<=$seiten;$n++)
echo $n == $_GET['seite'] ? "[$n]" : "<a href="gaestebuch.php?seite=$n">[$n]</a>";
:)
Gruß,
Sven
Hi,
Z.B. gibts für echo keine mehreren paramter, du musst die strings per "."-Operator zusammenfügen.
Falsch, siehe PHP-Manual, dort heißt es:
Description
void echo ( string arg1 [, string argn...])
Outputs all parameters.
cu,
Andreas
Hi Andreas,
Z.B. gibts für echo keine mehreren paramter, du musst die strings per "."-Operator zusammenfügen.
Falsch, siehe PHP-Manual, dort heißt es:
Description
void echo ( string arg1 [, string argn...])
Outputs all parameters.
...! Tatsächlich! Tja, danke für die Information, das wusste ich nicht.
hmm - obwohl es ja mehr oder weniger falsch ist, die Information: "echo 5;" z.B. funktioniert auch, obwohl hier 5 kein String ist ;)
Gruß,
Sven
Hi,
void echo ( string arg1 [, string argn...])
hmm - obwohl es ja mehr oder weniger falsch ist, die Information: "echo 5;" z.B. funktioniert auch, obwohl hier 5 kein String ist ;)
PHP macht da automatische Typkonvertierung.
cu,
Andreas
Hi Andreas,
void echo ( string arg1 [, string argn...])
hmm - obwohl es ja mehr oder weniger falsch ist, die Information: "echo 5;" z.B. funktioniert auch, obwohl hier 5 kein String ist ;)
PHP macht da automatische Typkonvertierung.
hm - ja, klar, ansonsten könnte es ja auch nicht funktioniernen ;-) - nur finde ich, ist es dann in der Doku schlecht beschrieben. eigentlich. an für sich. (oder auch nicht).
;-)
Gruß,
Sven
Hi,
hm - ja, klar, ansonsten könnte es ja auch nicht funktioniernen ;-) - nur finde ich, ist es dann in der Doku schlecht beschrieben. eigentlich. an für sich. (oder auch nicht).
Wieso? Dadurch kann man erkennen, daß die Typumwandlung in einen String stattfindet - kann also nicht mehr davon überrascht werden.
cu,
Andreas
Hi MudGuard,
hm - ja, klar, ansonsten könnte es ja auch nicht funktioniernen ;-) - nur finde ich, ist es dann in der Doku schlecht beschrieben. eigentlich. an für sich. (oder auch nicht).
Wieso? Dadurch kann man erkennen, daß die Typumwandlung in einen String stattfindet - kann also nicht mehr davon überrascht werden.
Deswegen ja auch in den Klammern "oder auch nicht": Mein Gedankengang war komisch. Ist ja auch egal, Fakt ist, dass diese automatische Typumwandlung sozusagen zu erwarten ist, und deswegen - man kein Wort mehr darüber verlieren braucht ;)
Gruß,
Sven
Hello,
Kann es sein, dass es in PHP Probleme mit verschachtelten {}-Blöcken gibt?
for($n = 1; $n <= $seiten; $n++)
{
if($n = $_Get['seite']) ## was soll das werden? Ein Vergleich? Dann ==
{
echo "[", $n, "]";
}
else
{
echo "<a href='gaestebuch.php?seite=", $n, "'>[", $n, "]</a> ";
}
}
Dieser Quellcode ergibt bei mir eine Endlosschleife.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi,
Kann es sein, dass es in PHP Probleme mit verschachtelten {}-Blöcken gibt?
Nein.
for($n=1;$n<=$seiten;$n++){
if($n=$_Get['seite']){
Hier weist Du $n den Wert $_Get['seite'] zu. Der dürfte 0 sein (meinst Du $_GET['seite']?).
Damit ist $n immer <= $seiten...
Vermutlich willst Du auch vergleichen == statt zuweisen =
cu,
Andreas