PHP条件:is_null($ someVariable)与$ someVariable === 0

时间:2015-07-14 15:56:17

标签: php if-statement conditional

我刚调试了一个问题,我在这里提到了根目录:

第一个条件是真的; 第二个条件不执行;

为什么第二个条件不执行?

$someVariable = 0;

if ( $someVariable === 0 ) var_dump('worked');

if ( is_null($someVariable) ) var_dump('worked too');

我认为我看到它在某些传统中发挥作用。代码,但我不确定。

2 个答案:

答案 0 :(得分:4)

来自is_null文档:

  

如果var为null,则返回TRUE,否则返回FALSE。

第二个条件不会执行,因为$someVariable不为空。

答案 1 :(得分:2)

要扩展@ jim的答案:

虽然0 == null(等于),0 !== null(不是相同)。
当使用equals运算符时,变量是autocast类型,在这种情况下{{1}变成null;但是在使用0运算符时,也会检查值的实际类型。在这种情况下,identical to0intnull。显然,这是不一样的。 ;)
null检查变量的类型,就像is_null()运算符一样。这就是为什么它没有评估为identical

PHP手册提供了有关the operatorstype juggling以及它们如何运作的更多信息。我强烈建议您阅读该部分几次。