PHP 5.3如何认为0为空?

时间:2013-08-23 14:37:48

标签: php

我写了一个简单的测试:

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

3 个答案:

答案 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