我一直在写我的"如果这个变量不是空的"这样的语句如下:
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)