2

我写了一个简单的测试:

$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?为什么?

4

3 回答 3

3

那是因为当你使用PHP 时,PHP 执行了一个松散的比较==,也就是说,如果它们不同,它会尝试将其中一个操作数强制转换为另一个操作数的类型。

例如:

array() == false
null == ''
0 == '0'

要将值类型一起比较,您需要===(三等号运算符),例如

if (null === 0) {
    // this can never happen
}

这是使用动态类型语言的负担:)

于 2013-08-23T14:41:55.610 回答
2

使用is_null功能

is_null($test)

测试

$test = 0;
if (is_null($test)) print 'is null';
else print 'not null';

// Return not null
于 2013-08-23T14:39:46.703 回答
1

PHP 将0其视为NULL.

要检查值是否为NULL,您可以使用is_null()函数或===在条件语句中使用:

$test = 0;
if ($test === null) print 'is null';
else print 'not null';

在此处查看演示

有关详细信息,请参阅PHP 手册

于 2013-08-23T14:43:58.540 回答