2013-01-15 44 views
0

我有一些足球比分(球门差异)的数据库。如何区分“0”和null?

p12_score1包含3,-2,0和NULL

所有我想要做的是打印所有得分差异(包括0),而忽略不具有任何值(NULL在MySQL)的行。然而,is_null也认为值0为空并且不打印它。

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

use'if(!$ p12_score1 === null)'see:http://php.net/manual/en/language.operators.comparison.php – dbrumann

回答

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

然而is_null也认为值0空,不会打印出来。

http://codepad.org/mjiGfhTB

但是,您使用comparisong操作

$p12_score1==NULL 

在这种情况下:在松散类型languaged null等于0(和其他一些;))。然而,PHP支持身份comparisong

$p12_score1===NULL 

阿里纳斯:!$a == $b稍微难看。使用实际“不等于”!=!==

0

试试这个:

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

尝试

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

如果你想这样做,在PHP的不是SQL你有你的代码改成这样:

IF (!$p12_score1 === NULL) 

这你检查的方式是$p12_score1正好是 null。

0

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