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判斷的是變數,所以回傳trueempty判斷的是值,所以回傳true

 

所以在遇到這三種狀況的時候要小心使用

不要被它們三個傢伙誤導了...

(碎碎念:媽呀~寫這篇文章快想瘋了@@)

 

 

如果覺得對你有幫助的話. 麻煩幫小弟按個讚哦~

 

其他相關文章參考:

 

PHP __construct(建構子)和 __destruct(解構子) 使用方法

 

static變數、public變數、private變數、protected變數的使用方法-PHP

 

PHP常用 $_SERVER 伺服器變數(環境變數)

 

 

 

arrow
arrow

    newaurora 發表在 痞客邦 留言(7) 人氣()