是的,两个片段都是等效的.
is_null定义为:
Returns TRUE if var is null, FALSE otherwise.
文档还清楚地表明,当变量未定义时,is_null会抛出一个警告,对$result的简单布尔评估也是如此.如果$result未设置,is_null($result)为true,因此您会收到一条警告 – 与您一样的$result也是一样的.
由于NULL的布尔评估(不出意外)为false,我们可以简单地测试出所有有趣的值:
$result is_null($result) !$result is_null($result) || !$result
(unset) true(+warn) true(+warn) true (+warn)
null true true true
false(-y) false true true
true(-ish) false false false
请注意,对于评估为false的所有值以及所有评估为true的值,is_null和!$result的结果是相同的.因此,没有进一步的区别(比如通过测试0,“”等)是必要的.