ADUNIT000

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,則 TURE 

       echo "c=".isset($c)."<br>"; 

//變數存在,且值為1,則 TURE

       echo "d=".isset($d)."<br>";

//變數存在,但是值是空字串,則 TURE

       echo "e=".isset($e)."<br>"; 

//變數存在,且值不為NULL,則為 TRUE

       echo "g=".isset($g)."<br>";

 

//再來用empty()函數來測試

//empty()函數用來判斷"值"是不是空的,如果沒有就回傳 1(true),如果有"值"就不回傳

//變數不存在為 TURE

       echo "a=".empty($a)."<br>";

//變數存在,且值為NULL,則 TURE

       echo "b=".empty($b)."<br>";

//變數存在,且值為0,則 TURE,無論是不是用字串("0")的形式去定義,都算是空值

       echo "c=".empty($c)."<br>";

//變數存在,且值為1,則 FALSE

       echo "d=".empty($d)."<br>";

//變數存在,但是值是空字串,則 TURE

       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

 

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

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

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

 

 

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

, , ,
創作者介紹

史丹利愛碎念

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


留言列表 (2)

發表留言
  • PHP新手
  • 非常清晰,有條理 的分析, 對於新手有很大的幫助
    感謝!
  • 謝謝~

    newaurora 於 2015/10/22 23:30 回覆

  • PHP
  • 對初學者有很大的幫助。
  • 謝謝~

    newaurora 於 2017/01/30 14:48 回覆