私はいつもこれをしましたif($foo!==$bar)
が、if($foo!=$bar)
も正しいことに気付きました。 Double =
は引き続き機能し、常に機能しますが、PHP演算子を検索するたびにdouble =
に関する情報が見つからないので、常にこの間違いを犯したと思いますが、とにかく動作します。そのために、すべての!==
を!=
に変更する必要がありますか?
==
および!=
は、比較する変数のデータ型を考慮しません。したがって、これらはすべてtrueを返します。
'0' == 0
false == 0
NULL == false
===
および!==
doデータ型を考慮します。つまり、文字列をブール値と比較するとneverが真になります。なぜなら、それらはたとえば異なるタイプであるためです。これらはすべてfalseを返します。
'0' === 0
false === 0
NULL === false
曖昧な真実/偽の値になる可能性のある値を返す関数のデータ型を比較する必要があります。よく知られている例は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
!==は値とデータ型と一致する必要があります
!=データ型を無視して値と一致するだけ
$num = '1';
$num2 = 1;
$num == $num2; // returns true
$num === $num2; // returns false because $num is a string and $num2 is an integer
$a !== $b
TRUE$a
が$b
と等しくない場合、または同じタイプではない場合
http://php.net/manual/en/language.operators.comparison.php
を参照してください
ここで情報を見つけることができます: http://www.php.net/manual/en/language.operators.comparison.php
PHP4まで追加されなかったため、不足しています。あなたが持っているものは大丈夫ですが、型の違いがあるかもしれないことがわかっている場合は、比較で値and型をテストしているので、はるかに優れた比較です、価値だけではありません。