如何区分“0”和null?

时间:2013-01-15 15:12:03

标签: php null comparison

我有一个包含一些足球比分(目标差异)的数据库。

p12_score1 包含3,-2,0和NULL

我想要做的就是打印所有得分差异(包括0)并忽略没有值的行(mysql中为NULL)。但是is_null也将值0视为null并且不会打印它。

IF(!$p12_score1==NULL){
$equal[] = $p12_score1;
}
else {
echo "null";
}
print_r ($equal);

6 个答案:

答案 0 :(得分:3)

is_null 认为值0等于null

您的代码使用==进行比较,但没有区分。请改用identical operator ===is_null

// One way to do it:
if(!$p12_score1 !== NULL)

// Another:
if(!is_null($p12_score1))

答案 1 :(得分:1)

  

然而,is_null也将值0视为null并且不会打印它。

没有。 http://codepad.org/mjiGfhTB

但是,您使用比较运算符

$p12_score1==NULL

并且在这种情况下:松散类型的语言null等于0(以及其他一些;))。但是,PHP支持身份比较

$p12_score1===NULL

旁注:!$a == $b略显难看。使用真实“不等于”!=!==

答案 2 :(得分:0)

试试这个:

IF(!empty($p12_score1)){
$equal[] = $p12_score1;
}
else {
echo "null";
}
print_r ($equal);

答案 3 :(得分:0)

尝试

if($p12_score1 !== null) {
    $equal[] = $p12_score1;
} else {
echo "null";
}
print_r ($equal);

答案 4 :(得分:0)

如果您想在PHP而不是sql中执行此操作,则必须将代码更改为:

IF (!$p12_score1 === NULL)

通过这种方式,您可以检查$p12_score1是否完全为空。

答案 5 :(得分:0)

函数is_null应该有效。另一个选项是is_int。我试过两个都正常工作。