==
y !=
berücksichtigen nicht den Datentyp der Variablen, die Sie vergleichen. Diese würden also alle true zurückgeben:
'0' == 0
false == 0
NULL == false
===
y !==
tun den Datentyp zu berücksichtigen. Das heißt, der Vergleich einer Zeichenkette mit einem Booleschen Wert wird niemals wahr sein, weil sie z. B. von unterschiedlicher Art sind. Diese werden alle false zurückgeben:
'0' === 0
false === 0
NULL === false
Sie sollten Datentypen für Funktionen vergleichen, die Werte zurückgeben, die möglicherweise einen mehrdeutigen Wahrheits-/Falschheitswert haben könnten. Ein bekanntes Beispiel ist strpos()
:
// This returns 0 because F exists as the first character, but as my above example,
// 0 could mean false, so using == or != would return an incorrect result
var_dump(strpos('Foo', 'F') != false); // bool(false)
var_dump(strpos('Foo', 'F') !== false); // bool(true), it exists so false isn't returned