非null if语句的最佳实践

Eva*_*son 13 php

我一直在写我的"如果这个变量不是空的"这样的语句如下:

if ($var != '') {
// Yup
}
Run Code Online (Sandbox Code Playgroud)

但我已经问过这是否正确,它对我没有造成问题.这是我在网上找到的答案:

if (!($error == NULL)) {
/// Yup
}
Run Code Online (Sandbox Code Playgroud)

这实际上看起来比我的方法更长,但它更好吗?如果是这样,为什么?

web*_*ave 30

而不是:

if (!($error == NULL))
Run Code Online (Sandbox Code Playgroud)

简单地说:

if ($error)
Run Code Online (Sandbox Code Playgroud)

人们会认为第一个更清楚,但实际上更具误导性.原因如下:

$error = null;

if (!($error == NULL)) {
    echo 'not null';
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但是,接下来的五个值将具有相同的(以及许多意外的)行为:

$error = 0;
$error = array();
$error = false;
$error = '';
$error = 0.0;
Run Code Online (Sandbox Code Playgroud)

第二个条件if ($error)使得更清楚涉及类型转换.

如果程序员想要求实际值NULL,他应该使用严格的比较,即,if ($error !== NULL)