simpel: komisches if

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • simpel: komisches if

    Hallo Forum

    Folgendes Codestück:
    PHP-Code:
    if ($itsyourturn == "error") {
        echo (
    " /*logout();*/ ");
        
    $itsyourturn 1;

    wobei $itsyourturn = 0 ist.
    Jetzt geht er mir aber immer in den Block rein.
    Sollte ich diese Abfrage anders machen, ist das ein Bug oder kennt jemand mögliche Ursachen?

    Herzlichen Dank
    Onyx
    Zuletzt geändert von Onyxagargaryll; 03.03.2009, 14:41.

  • #2
    Was ist denn daran das Problem?

    When $itsyourturn auf 0 steht, dann wird der if block nicht betreten.

    Kommentar


    • #3
      lol x/ ich hab das problem vergessen:
      Er geht in den Block rein

      Sorry für den Fehler ^^

      Kommentar


      • #4
        Na dann is $itsyourturn ein String und steht auf "error".

        Da brauchen wir mehr Code.

        Kommentar


        • #5
          Ja das dachte ich ja zunächst auch, aber ein echo von $itsyourturn gleich vor dem if ergibt "0" als Ausgabe.

          Kommentar


          • #6
            PHP-Code:
            if ("error" === $itsyourturn
            {
                echo (
            " /*logout();*/ ");
                
            $itsyourturn 1;

            So geht es nur in den IF Block wenn in $itsyourturn wirklich der String "error" steht.

            Zuletzt geändert von combie; 03.03.2009, 14:46.
            Wir werden alle sterben

            Kommentar


            • #7
              Hmm dann scheint es ein PHP bug zu sein... wo kann man das + eine genaue Beschreibung melden?
              Weiss das vlt. grad jemand? ^^

              EDIT: gefunden, sry!
              (Man sollte halt "bug" anstatt "fehler" zum suchen benutzen x/)

              Also danke für die Hilfe, wünsche noch einen schönen Tag!

              Kommentar


              • #8
                Obwohl ich deine Eingangsdaten nicht 100%ig kenne, beaupte ich:
                Nein, es ist kein Bug.
                Ein Bug wäre es wenn PHP sich anders als hier beschrieben verhalten würde:
                http://www.php.net/manual/de/languag...comparison.php
                Wir werden alle sterben

                Kommentar


                • #9
                  hmm jo verstehe ich ja, aber wenn
                  PHP-Code:
                  if (== 'error'
                  true ist besteht da schon ein Fehler..
                  und wie oben beschrieben, ich habe das Skript mehrere Male mit einem echo gleich vor dem if ausgeführt, und jedesmal erhielt ich die Ausgabe "0", " /*logout() /* ".

                  Wie dem auch sei, ich bin mir sicher eine Problembeschreibung an php.net wird dem Problem abhelfen

                  Also nochmals Danke und Gruss
                  Onyx
                  Zuletzt geändert von Onyxagargaryll; 03.03.2009, 14:59.

                  Kommentar


                  • #10
                    Was steht denn da nun? =, == oder ===? Das issn Himmelweiter Unterschied..
                    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                    Kommentar


                    • #11
                      sry mein Fehler im vorigen Post, es ist wahr und wird immer == sein

                      Aber gut aufgepasst! )

                      Gruss
                      Onyx

                      Kommentar


                      • #12
                        Wie dem auch sei, ich bin mir sicher eine Problembeschreibung an php.net wird dem Problem abhelfen
                        Das ist völlig unnötig!


                        Dein Problem ist folgendes:
                        Du vergleichst nicht Äpfel mit Birnen, sondern einen Integer Wert mit einem String.
                        Also zwingst du PHP zu einer Typekonvertierung.
                        Die Priorität liegt dabei auf Integer.

                        Dein String 'error' wird dadurch zur integer 0
                        Und "0 == 0" ist eben true, da beist keine Maus einen Faden ab.

                        Alternativ könntest du die 0 zu einem String wandeln, dann fluppt auch dein Vergleich!

                        PHP-Code:
                        if(((string)0) == 'trr'
                            echo 
                        'true';
                        else echo 
                        'false'
                        Zuletzt geändert von combie; 03.03.2009, 16:16.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Ah super!
                          Also doch kein Bug ^^
                          Dann ist ja alles klar Danke vielmals für die Lösung!

                          MfG
                          Onyx

                          Kommentar

                          Lädt...
                          X