0

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

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);
4

6 回答 6

3

is_null认为0等于null

您的代码==用于比较,这没有区别。使用相同的运算符 ===is_null代替:

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

// Another:
if(!is_null($p12_score1))
于 2013-01-15T15:14:32.833 回答
1

但是 is_null 也将值 0 视为 null 并且不会打印它。

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

但是,您使用了 compareg 运算符

$p12_score1==NULL

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

$p12_score1===NULL

旁注:!$a == $b有点难看。使用真正的“不等于” !=,或!==

于 2013-01-15T15:14:36.590 回答
0

试试这个:

IF(!empty($p12_score1)){
$equal[] = $p12_score1;
}
else {
echo "null";
}
print_r ($equal);
于 2013-01-15T15:14:40.317 回答
0

尝试

if($p12_score1 !== null) {
    $equal[] = $p12_score1;
} else {
echo "null";
}
print_r ($equal);
于 2013-01-15T15:14:56.553 回答
0

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

IF (!$p12_score1 === NULL)

这样你检查它$p12_score1是否完全为空。

于 2013-01-15T15:15:12.860 回答
0

该功能is_null应该可以工作。另一种选择是is_int。我都试过了,都正常工作。

于 2013-01-15T15:34:26.130 回答