一尘不染

在PHP中不等于!=和!==

php

我一直这样做: if ($foo !== $bar)

但我意识到这if ($foo != $bar)也是正确的。

Double
=仍然可以使用,并且一直为我工作,但是每当我搜索PHP运算符时,都找不到关于double的信息=,因此我认为我一直做错了,但是无论如何它都可以工作。我应该改变我的所有!==!=只是为了它的缘故?


阅读 1263

收藏
2020-05-29

共1个答案

一尘不染

==并且!=不考虑您比较的变量的数据类型。因此,这些都将返回true:

'0'   == 0
false == 0
NULL  == false

===并且!== 考虑到数据类型。这意味着将字符串与布尔值进行比较 永远不会
是正确的,因为例如它们的类型不同。这些都将返回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
2020-05-29