PHP:使用is_null()与!$var或isset($var)
发布时间:2020-12-13 16:34:18 所属栏目:PHP教程 来源:网络整理
导读:虽然我相信答案是肯定的,但我已经在旧版代码中看到了以下内容,我怀疑自己.我要求社区进行健全检查. 遗产代码 if (is_null($result) || !$result) { 重构代码 if (!$result) { 注意:如果$result未设置,我知道这将抛出一个通知. 题 这段代码在逻辑上是等价的
虽然我相信答案是肯定的,但我已经在旧版代码中看到了以下内容,我怀疑自己.我要求社区进行健全检查.
遗产代码 if (is_null($result) || !$result) { 重构代码 if (!$result) { 注意:如果$result未设置,我知道这将抛出一个通知. 题 这段代码在逻辑上是等价的吗? 代码测试 我测试了所有的组合PHP false values没有收到不等于…. $false_values = array(false,0.0,'0','',null,array(),new stdClass()); foreach ($false_values as $var) { if (!$var != (is_null($var) || !$var)) { echo 'Not equal for: '; var_dump($var); } } 产量 $php check.php $
是的,两个片段都是等效的.
is_null定义为:
文档还清楚地表明,当变量未定义时,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,“”等)是必要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |