skyposter: { } in 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.

  1. 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

  2. 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

    --
    !:        I'm back!
    Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
    Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
    Decode:   http://peter.in-berlin.de/projekte/selfcode/
    E-Mail:   coming soon
    me:       'd comed long ago
    1. 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

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 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

        --
        !:        I'm back!
        Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
        Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
        Decode:   http://peter.in-berlin.de/projekte/selfcode/
        E-Mail:   coming soon
        me:       'd comed long ago
        1. 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

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. 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

            --
            !:        I'm back!
            Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
            Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
            Decode:   http://peter.in-berlin.de/projekte/selfcode/
            E-Mail:   coming soon
            me:       'd comed long ago
            1. 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

              --
              MudGuard? Siehe http://www.Mud-Guard.de/
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. 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

                --
                !:        I'm back!
                Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
                Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
                Decode:   http://peter.in-berlin.de/projekte/selfcode/
                E-Mail:   coming soon
                me:       'd comed long ago
  3. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  4. 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

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.