***PHP中empty()和isset()的區別

weixin_34262482發表於2015-03-02

對於初學php的人來說,empty()和和isset()用法的區別是很難搞清楚的,他們的用法的差別不仔細去琢磨的話確實很難弄清楚。

先說一下他們的共同點:

  1. 都可以判定一個變數是否為空;

  2. 都返回boolean型別,即true或false。

下面具體說一下他們用法之間的區別:

  1. isset()用來檢測變數是否設定,只能用於變數,因為傳遞任何其它引數都將造成解析錯誤。若想檢測常量是否已設定,可使用 defined() 函式。如果已經使用 unset() 釋放了一個變數之後,它將不再是 isset()。若使用 isset() 測試一個被設定成 NULL 的變數,將返回 FALSE。(注意的是一個 NULL 位元組("\0")並不等同於 PHP 的 NULL 常數)

  2. empty()用來檢查一個變數是否為空。

  3. 他們之間最大的區別就是對於0的判斷,若用empty判斷會認為是空,用isset則認為不為空,舉個例子:

    <?php

          var $a=0;

           //empty($a)返回true

           if(empty($a)){

                 echo "判斷結果是空"

           }

          //isset($a)返回true

           if(isset($a)){

                 echo "判斷結果不是空"

           }

       ?>

-----------------------------------------------------------------------------

isset檢視一個變數是否已經被設定並且不為空(Determine if a variable is set and is not NULL)

empty檢視一個變數是否為空 ""、0、"0"、NULL、FALSE、array()、$var($var是一個沒有賦值的變數)

另外需要注意的是從PHP5.5開始,empty()只能支援變數,其他任何東西傳遞進來都將會導致介解析錯誤。

換句話說,像下面的這個表示式將不再湊效empty(trim($name))。我們應該用trim($name) == false來代替它來做判斷

上面程式碼的執行結果

相關文章