我刚调试了一个问题,我在这里提到了根目录:
第一个条件是真的; 第二个条件不执行;
为什么第二个条件不执行?
$someVariable = 0;
if ( $someVariable === 0 ) var_dump('worked');
if ( is_null($someVariable) ) var_dump('worked too');
我认为我看到它在某些传统中发挥作用。代码,但我不确定。
答案 0 :(得分:4)
来自is_null
文档:
如果var为null,则返回TRUE,否则返回FALSE。
第二个条件不会执行,因为$someVariable
不为空。
答案 1 :(得分:2)
要扩展@ jim的答案:
虽然0 == null
(等于),0 !== null
(不是相同)。
当使用equals运算符时,变量是autocast类型,在这种情况下{{1}变成null
;但是在使用0
运算符时,也会检查值的实际类型。在这种情况下,identical to
是0
,int
是null
。显然,这是不一样的。 ;)
null
检查变量的类型,就像is_null()
运算符一样。这就是为什么它没有评估为identical
。
PHP手册提供了有关the operators,type juggling以及它们如何运作的更多信息。我强烈建议您阅读该部分几次。