檢查只是出於好奇(以及一些必要的):PHP爲NULL值
if(! is_null($var)){
//do something
}
是上述聲明一樣
if($var != NULL){
//do something
}
檢查只是出於好奇(以及一些必要的):PHP爲NULL值
if(! is_null($var)){
//do something
}
是上述聲明一樣
if($var != NULL){
//do something
}
不,他們是不一樣的。
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
}
是的,這是(幾乎)是正確的,你可以測試這個自己:
$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,則等於 。
===還檢查對象類型 ==只檢查看重
我不知道你在測試什麼,但:
一)是$ 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
你試過了嗎?你自己的結論是什麼?你有懷疑的具體原因嗎? – Lix
是的,他們是。看看php的比較表:http://www.php.net/manual/en/types.comparisons.php – Hast
我有,上面的語句似乎評估爲true,無論var是否爲NULL。在我看來,它不應該是這樣的 – Kisaragi