php不等于!=和!==

law*_*nce 60 php operators

我一直这样做,if($foo!==$bar)但我意识到这if($foo!=$bar)也是正确的.Double =仍然可以工作,并且一直为我工作,但每当我搜索PHP运算符时,我发现没有关于double的信息,=所以我认为我总是做错了,但它仍然有用.所以,我要改变这一切我!==!=只是为了它的缘故?

Bol*_*ock 122

==并且!=不要考虑您比较的变量的数据类型.所以这些都会回归真实:

'0'   == 0
false == 0
NULL  == false
Run Code Online (Sandbox Code Playgroud)

===并且!== 考虑到数据类型.这意味着将字符串与布尔值进行比较将永远不会成为真,因为它们具有不同的类型.这些都将返回false:

'0'   === 0
false === 0
NULL  === false
Run Code Online (Sandbox Code Playgroud)

您应该比较返回值可能具有模糊真值/假值的函数的数据类型.一个众所周知的例子是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
Run Code Online (Sandbox Code Playgroud)


San*_*eep 30

!==应匹配值和数据类型

!=只匹配忽略数据类型的值

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

$num == $num2; // returns true    
$num === $num2; // returns false because $num is a string and $num2 is an integer
Run Code Online (Sandbox Code Playgroud)


小智 5

$a !== $b 如果$a不等于$b或它们不是同一类型,则为TRUE

请参阅http://php.net/manual/en/language.operators.comparison.php