2013-01-15 43 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。我試了兩個,都正常工作。