我一直这样做: if ($foo !== $bar)
if ($foo !== $bar)
但我意识到这if ($foo != $bar)也是正确的。
if ($foo != $bar)
Double =仍然可以使用,并且一直为我工作,但是每当我搜索PHP运算符时,都找不到关于double的信息=,因此我认为我一直做错了,但是无论如何它都可以工作。我应该改变我的所有!==来!=只是为了它的缘故?
=
!==
!=
==并且!=不考虑您比较的变量的数据类型。因此,这些都将返回true:
==
'0' == 0 false == 0 NULL == false
===并且!== 也 考虑到数据类型。这意味着将字符串与布尔值进行比较 永远不会 是正确的,因为例如它们的类型不同。这些都将返回false:
===
'0' === 0 false === 0 NULL === false
您应该比较函数的数据类型,这些函数返回的值可能是含糊的真实/错误值。一个著名的例子是strpos():
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