我写了一个简单的测试:
$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?为什么?
我写了一个简单的测试:
$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?为什么?
那是因为当你使用PHP 时,PHP 执行了一个松散的比较==
,也就是说,如果它们不同,它会尝试将其中一个操作数强制转换为另一个操作数的类型。
例如:
array() == false
null == ''
0 == '0'
要将值和类型一起比较,您需要===
(三等号运算符),例如
if (null === 0) {
// this can never happen
}
这是使用动态类型语言的负担:)
使用is_null
功能
is_null($test)
$test = 0;
if (is_null($test)) print 'is null';
else print 'not null';
// Return not null