PHP isset()和empty()的區別
寫程式過程中,經常會用到判斷函數isset()和empty()
但有時候會搞不清楚兩者的差別
最大的差別是兩者判斷的東西不同
isset判斷的是 "變數"
empty判斷的是 "值"
下面做了幾個例子來測試一下
//先設定幾個變數,這邊故意沒有設A這個變數
$b = NUll;
$c = 0;
$d = 1;
$e = "";
$g = "Abc";
//下面用isset()函數來測試
//isset()函數是用來判斷變數是不是有存在,如果有就回傳 1(true),如果沒有就回傳空值
//變數不存在為 FALSE
echo "a=".isset($a)."<br>";
//變數存在,且值為NULL,則 FALSE;對isset來說,把變數值設為 NULL 就等於變數不存在,因此會回傳空值
echo "b=".isset($b)."<br>";
//變數存在,且值為0,則 TRUE
echo "c=".isset($c)."<br>";
//變數存在,且值為1,則 TRUE
echo "d=".isset($d)."<br>";
//變數存在,但是值是空字串,則 TRUE
echo "e=".isset($e)."<br>";
//變數存在,且值不為NULL,則為 TRUE
echo "g=".isset($g)."<br>";
//再來用empty()函數來測試
//empty()函數用來判斷"值"是不是空的,如果沒有就回傳 1(true),如果有"值"就不回傳
//變數不存在為 TRUE
echo "a=".empty($a)."<br>";
//變數存在,且值為NULL,則 TRUE
echo "b=".empty($b)."<br>";
//變數存在,且值為0,則 TRUE,無論是不是用字串("0")的形式去定義,都算是空值
echo "c=".empty($c)."<br>";
//變數存在,且值為1,則 FALSE
echo "d=".empty($d)."<br>";
//變數存在,但是值是空字串,則 TRUE
echo "e=".empty($e)."<br>";
//變數存在,且值不為NULL,則為 FALSE
echo "g=".empty($g)."<br>";
上述的測試範例有幾個特別的點,要特別注意
1. 變數值為NULL的時候,isset會把變數當成不存在;但empty不會
2. 變數值為0的時候,isset判斷的是變數,所以回傳true;但是empty會把0當成空值,所以也會回傳true
3. 變數值為空字串的時候,isset判斷的是變數,所以回傳true;empty判斷的是值,所以回傳true
所以在遇到這三種狀況的時候要小心使用
不要被它們三個傢伙誤導了...
(碎碎念:媽呀~寫這篇文章快想瘋了@@)
如果覺得對你有幫助的話. 麻煩幫小弟按個讚哦~
其他相關文章參考:
PHP __construct(建構子)和 __destruct(解構子) 使用方法
static變數、public變數、private變數、protected變數的使用方法-PHP
留言列表