PHP不等于!=和!==

我总是这样做if($foo!==$bar)但是我意识到if($foo!=$bar)也是正确的。 双=仍然工作,一直为我工作,但每当我searchPHP运营商,我发现没有信息双=所以我认为我一直做这个错误,但无论如何工作。 所以,我应该改变我所有的!==!=只是为了它?

==!=不考虑你比较的variables的数据types。 所以这些都会返回true:

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

===!== 确实考虑了数据types。 这意味着将string与布尔值进行比较将永远不会是真实的,因为它们是不同的types。 这些都将返回false:

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

您应该比较函数的数据types,以返回可能具有模糊的真/假值的值。 一个众所周知的例子是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 

!==应该匹配值和数据types

!=只是匹配忽略数据types的值

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

$a !== $b如果$a不等于$b ,或者它们不是相同types, $a !== $b TRUE

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

你可以在这里find信息: http : //www.php.net/manual/en/language.operators.comparison.php

这是稀缺的,因为直到PHP4才join。 你所拥有的是好的,如果你知道可能存在types差异,那么它是一个更好的比较,因为它是testing的价值types的比较,而不仅仅是价值。