我写了一个简单的测试:
$test = null;
if ($test == null) print 'is null';
else print 'not null';
打印出:“为空”。问题是,我改为:
$test = 0;
if ($test == null) print 'is null';
else print 'not null';
它仍然打印出null?为什么呢?
答案 0 :(得分:3)
这是因为当你使用==
时PHP会执行loose comparison,即如果它们不相同,它会尝试将其中一个操作数强制转换为另一个操作数。
例如:
array() == false
null == ''
0 == '0'
要将值和一起比较,您需要===
(三等于运算符),例如
if (null === 0) {
// this can never happen
}
这是使用动态类型语言的负担:)
答案 1 :(得分:2)
使用is_null
功能
is_null($test)
$test = 0;
if (is_null($test)) print 'is null';
else print 'not null';
// Return not null
答案 2 :(得分:1)
PHP将0
视为NULL
。
要检查某个值是否为NULL
,您可以使用is_null()
函数或在条件语句中使用===
:
$test = 0;
if ($test === null) print 'is null';
else print 'not null';
在此处查看demo。
有关详细信息,请参阅PHP Manual。