2014-02-12 43 views
0

檢查只是出於好奇(以及一些必要的):PHP爲NULL值

if(! is_null($var)){ 
    //do something 
} 

是上述聲明一樣​​

if($var != NULL){ 
//do something 
} 
+0

你試過了嗎?你自己的結論是什麼?你有懷疑的具體原因嗎? – Lix

+1

是的,他們是。看看php的比較表:http://www.php.net/manual/en/types.comparisons.php – Hast

+0

我有,上面的語句似乎評估爲true,無論var是否爲NULL。在我看來,它不應該是這樣的 – Kisaragi

回答

3

不,他們是不一樣的。

is_null函數也可以比較類型。

例:

你的情況
<?php 
    var_dump(is_null(0)); // bool(false) 
    var_dump(0 == NULL); // bool(true) 
    var_dump(0 === NULL); // bool(false) 

所以

if(! is_null($var)){ 
    //do something 
} 

將是相同

if($var !== NULL){ 
    //do something 
} 
1

是的,這是(幾乎)是正確的,你可以測試這個自己:

$emptyvar1 = null; 
    $emptyvar2=""; 
    if(is_null($emptyvar1) && $emptyvar1 == NULL){ 
     echo "1"; 
    } 
    if(is_null($emptyvar2)){ 
     echo "2"; 
    } 
    if($emptyvar2 == null){ 
     echo "3"; 
    } 
    if($emptyvar2 === null){ 
     echo "4"; 
    } 

這將打印1和3. ,因爲如果您只使用2次,空字符串等於空,如果您使用3次= it aint,則等於 。

===還檢查對象類型 ==只檢查看重

1

我不知道你在測試什麼,但:

一)是$ var = NULL; 這兩種語句都不觸發,

b)$ var = 0; is_null觸發器和

c)$ var =''; is_null觸發器也是。

所以上面的陳述肯定不會得出相同的結論。

見自己:

echo 'testing NULL case<br>'; 
$var = NULL; 
if(! is_null($var)){ 
    echo 'var is_null<br>'; 
} 
if($var != NULL){ 
    echo 'var != null<br>'; 
} 

echo 'testing 0 case<br>'; 
$var = 0; 
if(! is_null($var)){ 
    echo 'var is_null<br>'; 
} 
if($var != NULL){ 
    echo 'var != null<br>'; 
} 

echo 'testing empty string case<br>'; 
$var = ''; 
if(! is_null($var)){ 
    echo 'var is_null<br>'; 
} 
if($var != NULL){ 
    echo 'var != null<br>'; 
} 

這個輸出

testing NULL case 
testing 0 case 
var is_null 
testing empty string case 
var is_null