vergleichsoperator ungleich

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

  • vergleichsoperator ungleich

    Hi,


    ich habe folgendes Problem. Auf meinem System mit PHP 5.2.0 geht diese Zeile

    if ( $row['za']>=$_POST['za']&& ($_POST['x2'] != $xs || $_POST['y2'] != $ys) )

    Auf einem System mit PHP 5.2.5 geht sie nicht. Der Ungleichopperator != wird ignoriert bzw als gleich gewertet.

    Gibt es den Operator != nicht merh in der PHP Version?

    Was muß ich ändern damit es geht?

  • #2
    Der Ungleichopperator != wird ignoriert bzw als gleich gewertet.
    Kann ich mir kaum vorstellen. Was steht in den ganzen Variablen und Arrayelementen drin?

    Kommentar


    • #3
      stehen Ganzzahlen drinnen.

      In einem anderen Teil des Skript konnte ich die Abfrage umstellen. Daher bin ich mir sicher das ungleich nicht geht. Ist die PHP Version schadhaft ?

      Gibt es noch andere Möglichkeiten auf ungleich zu prüfen?

      Kommentar


      • #4
        Das hat weder was mit dem Operator, noch mit der PHP-Version zu tun. Du wendest die Operatoren nur falsch an bzw. erwartest ein anderes Ergebnis. Vielleicht sind dir auch die Typumwandlungsregeln von PHP nicht vertraut.

        Poste doch mal das Ergebnis von diesem Aufruf:
        PHP-Code:
        var_dump$row['za'], $_POST['za'], $_POST['x2'], $xs$_POST['y2'], $ys ); 

        Kommentar


        • #5
          string(1) "9" string(1) "2" string(1) "2" string(1) "1" string(1) "1" string(1) "1"

          Kommentar


          • #6
            Ja, dann überleg doch mal, wie PHP das sieht:

            PHP-Code:
            if ( "9">="2"&& ("2" != "1" || "1" != "1") ) 
            Jetzt alles klar, oder?

            Kommentar


            • #7
              nicht wirklich, ausser das ich keine Zahlen habe, obwohl ich welche haben wollte.
              Selbst das was aus der DB kommt kommt als String und nicht als Integer

              Wie änder ich das ganze nun ?

              Und warum gehst auf dem einem System und auf dem anderen nicht?


              Ich habe jetzt die Variablen mit settype behandelt.
              Zuletzt geändert von devas; 17.01.2009, 18:40.

              Kommentar


              • #8
                Was heißt eigentlich "geht nicht" ?

                Kommt deine Abfrage am Ende immer true raus (was du nicht haben willst) oder immer false (was du nicht haben willst) ?

                mfg

                Kommentar


                • #9
                  PHP-Code:
                  if ( "9">="2"&& ("2" != "1" || "1" != "1") ) 
                  .. strings, ok, aber != müsste dennoch korrekt auswerten ob(daß) die Strings verschieden sind!?

                  Kommentar


                  • #10
                    Natürlich ist es in dem Fall egal ob man != oder !== einsetzt!
                    Mit != kann man Strings und Integers mischen.

                    So:
                    Ich habe noch kein PHP System gesehen bei dem != kaputt ist.
                    Der Fehler liegt entweder im logischen Verständniss oder in unerwarteten/falschen Daten.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Was willst du überhaupt erreichen? Klar sollte ja inzwischen sein, dass der erste Teil der Oder-Verknüpfung zu true evaluiert und der Rumpf des if-Statements ausgeführt wird. Meinst du das mit "geht nicht"? Sonst hast du einfach einen riesen Denkfehler.

                      Kommentar


                      • #12
                        Auf meinem System liefert das Skript das erwartet Ergebnis. Lade ich es auf ein anderes System liefert es nicht das erwartete Ergebnis. Lediglich die PHP Versionen sind unterschiedlich.

                        Kommentar


                        • #13
                          Lediglich die PHP Versionen sind unterschiedlich.
                          != hat sich von PHP3 bis PHP6 nicht geändert!
                          Zumindest nicht in Bezug auf Strings und integers.

                          Der Fehler liegt GANZ sicher woanders.

                          if ( "9">="2"&& ("2" != "1" || "1" != "1") )
                          Liefert unter allen PHP Versionen das gleiche Ergebnis.
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            Wie ich schon sagte, du hast da einen Denkfehler. Irgendwo steht in irgendeiner Variablen irgendetwas anderes, wie du denkst. An dem Operator liegt es aber definitiv nicht. Guck dir doch mal die var_dump-Ausgabe analog zu oben auf dem anderen Rechner an. Passen die Werte?

                            Kommentar

                            Lädt...
                            X