虽然我相信答案是肯定的,但我在遗留代码中看到了很多以下内容,我怀疑自己。我要求社区进行健全性检查。
旧代码
if (is_null($result) || !$result) {
重构代码
if (!$result) {
注意:我知道如果$result
未设置,这将引发通知。
问题
这段代码在逻辑上是等价的吗?
代码测试
我测试了PHP 错误值的所有组合,但没有收到Not equal for ...。
$false_values = array(false, 0, 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
$