isset和empty以及is_null區別

注:根據時長用到的,本篇着重isset和empty。

1、當變量未定義時,is_null()和“參數本身”是不允許作爲參數判斷的,會報Notice警告錯誤;

2、empty,isset首先都會檢查變量是否存在,然後對變量值進行檢測。而is_null 和 “參數本身”只是直接檢查變量值,是否爲null,因此如果變量未定義就會出現錯誤!

3、isset():僅當null和未定義,返回false

4、empty():""、0、"0"、NULL、FALSE、array(),未定義,均返回false

5、is_null():僅判斷是否爲null,未定義 報警告;

6、變量本身作爲參數,與empty()一致,但接受未定義變量時,報警告;

示列:

<?php
// 預定義變量數組:空字符,字符0,數組0,null,布爾false,空數組
$arrVars = array('', '0', 0, null, false, array());
 
foreach ($arrVars as $value)
{
    echo '<br>傳入值爲:' . $value . '<br>';
    if (!isset($value))
    {
        echo 'isset()==false<br>';
    }
 
    if (empty($value))
    {
        echo 'empty()==true<br>';
    }
 
    if (!$value)
    {
        echo 'self==false<br>';
    }
 
    if (is_null($value))
    {
        echo 'is_null()==true<br>';
    }
}

結果:

傳入值爲:
empty()==true
self==false
 
傳入值爲:0
empty()==true
self==false
 
傳入值爲:0
empty()==true
self==false
 
傳入值爲:
isset()==false
empty()==true
self==false
is_null()==true
 
傳入值爲:
empty()==true
self==false
 
傳入值爲:Array
empty()==true
self==false

說明(結論)

1:""、0、"0"、NULL、FALSE、array()這幾個中,empty()和“變量本身作爲參數”結果一致,均作爲“空”來處理,而isset()和is_null ()僅當是null時,才作爲“空”來處理(值得注意的是false並不會被認爲是空)。

2:empty,isset輸入參數必須是一個變量(PHP變量是以$字符開頭的),而is_null輸入參數只要是能夠有返回值就可以(常量,變量,表達式等)。在PHP手冊裏面,對於他們解析是:empty,isset 是一個語言結構而非函數,因此它無法被變量函數調用。

總體區別:

empty()

如果 變量 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var、未定義,以及沒有任何屬性的對象都將被認爲是空的,如果 var 爲空,則返回 TRUE。

isset()

如果 變量 存在且值非NULL,則返回 TRUE,否則返回 FALSE(包括未定義)。變量值設置爲:null,返回也是false;unset一個變量後,變量被取消了。注意,isset對於NULL值變量,特殊處理。

is_null()

檢測傳入值【值,變量,表達式】是否是null,只有一個變量定義了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定義變量傳入後會出錯!】。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章