92 Stimmen

Nicht gleichzusetzen mit != und !== in PHP

Ich habe das immer gemacht: if ($foo !== $bar)

Aber mir wurde klar, dass if ($foo != $bar) ist ebenfalls korrekt.

Doppelter = funktioniert immer noch und hat bei mir immer funktioniert, aber wenn ich nach PHP-Operatoren suche, finde ich keine Informationen über doppelte = Ich nehme also an, dass ich das schon immer falsch gemacht habe, aber es funktioniert trotzdem. Sollte ich alle meine !== à != nur um der Sache willen?

171voto

BoltClock Punkte 660640

== 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

44voto

Sandeep Punkte 706

!== sollte mit dem Wert und dem Datentyp übereinstimmen

!= entspricht einfach dem Wert ohne Berücksichtigung des Datentyps

$num = '1';
$num2 = 1;

$num == $num2; // returns true    
$num === $num2; // returns false because $num is a string and $num2 is an integer

5voto

$a !== $b WAHR wenn $a ist nicht gleich $b oder sie sind nicht von der gleichen Art

Bitte beachten Sie http://php.net/manual/en/language.operators.comparison.php

0voto

Nick Craver Punkte 609016

Sie können die Informationen hier finden: http://www.php.net/manual/en/language.operators.comparison.php

Sie ist rar, weil sie erst in PHP4 hinzugefügt wurde. Was Sie haben, ist in Ordnung, wenn Sie wissen, dass es einen Typunterschied geben kann, dann ist es ein viel besserer Vergleich, da es ein Testwert ist y Typ im Vergleich, nicht nur Wert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X