• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variablen vergleichen: Null != 0

blabla333

Mitglied
Die Abfrage
if ($var1 != $var2) { echo "wahr"; }
trifft nicht zu, wenn $var1 = 0 ist und $var2 leer (stammt aus einer DB), obwohl beide Werte ja unterschiedlich sind. Wieso komme ich bei diesen beiden Werten nicht in die Klammer?

Wie muss die Bedingung korrekt fomuliert sein?
 
Was kommt denn hierbei raus:
PHP:
var_dump($var1);
var_dump($var2);
 
Hintergrund: PHP: PHP type comparison tables - Manual

Es ist generell keine schlechte Idee, immer === und !== zu nutzen.

Die einfache Begründung: Niemand will die Tabelle unter „Loose comparisons with ==“ auf der verlinkten Seite auswendig lernen. ;) Diese Komplexität sollte man nach Möglichkeit aus der Anwendung heraushalten beziehungsweise praktisch durch den ein oder anderen Typecast explizit formulieren. http://php.net/manual/en/language.types.type-juggling.php

Wobei das Thema auch wieder schlimm genug ist. Ich löse das gerne damit, einfach eine Exception zu werfen, wenn meiner Funktion nicht der passende Datentyp übergeben wird.

PHP:
function f($int)
{
    if (!is_int($int)) throw new Exception('Integer expected');
}

Soll sich doch bitte der aufrufende Code damit rumschlagen. :)
 
Zuletzt bearbeitet:
Zurück
Oben