php--isset()、is_null() 、empty()

K戰神發表於2017-06-21

開發中經常會遇到驗證某個引數是否是null或者是否為空。

一、isset()、is_null() 、empty() :

  isset():檢測變數是否設定,並且不是 NULL.如果變數沒有賦值 或者 變數賦值為null.為 false.

  is_null():檢測變數是否為 NULL,變數未宣告,提示錯誤,結果輸出。

  empty() :判斷一個變數是否被認為是空的。當一個變數並不存在,或者它的值等同於FALSE,那麼它會被認為不存在。如果變數不存在的話,empty()並不會產生警告。

$def1;
    $def2=0;
    $def3=false;
    $def4='';
    $def5=array();
    $def6=null;

    echo('--  isset()   --');
    echo("<br/>");
    echo('$def1');
    var_dump(isset($def1)    );
    echo("<br/>");
    echo('$def2=0  :');
    var_dump(isset($def2)    );
    echo("<br/>");
    echo('$def3=false  :');
    var_dump(isset($def3)    );
    echo("<br/>");
    echo('$def4=\'\'  :');
    var_dump(isset($def4)    );
    echo("<br/>");
    echo('$def5=array()  :');
    var_dump(isset($def5)    );
    echo("<br/>");
    echo('$def5=null  :');
    var_dump(isset($def6)    );
    echo("<hr/>");

    echo('--  is_null()   --');
    echo("<br/>");
    echo('$def1');
    var_dump(is_null($def1)    );
    echo("<br/>");
    echo('$def2=0  :');
    var_dump(is_null($def2)    );
    echo("<br/>");
    echo('$def3=false  :');
    var_dump(is_null($def3)    );
    echo("<br/>");
    echo('$def4=\'\'  :');
    var_dump(is_null($def4)    );
    echo("<br/>");
    echo('$def5=array()  :');
    var_dump(is_null($def5)    );
    echo("<br/>");
    echo('$def5=null  :');
    var_dump(is_null($def6)    );
    echo("<hr/>");

    echo('--  empty()   --');
    echo("<br/>");
    echo('$def1');
    var_dump(empty($def1)    );
    echo("<br/>");
    echo('$def2=0  :');
    var_dump(empty($def2)    );
    echo("<br/>");
    echo('$def3=false  :');
    var_dump(empty($def3)    );
    echo("<br/>");
    echo('$def4=\'\'  :');
    var_dump(empty($def4)    );
    echo("<br/>");
    echo('$def5=array()  :');
    var_dump(empty($def5)    );
    echo("<br/>");
    echo('$def5=null  :');
    var_dump(empty($def6)    );
    echo("<hr/>");

 

 
常用型別預設值,分三段,isset(),is_null(),empty(),是怎樣對待預設值的

 

 輸出:

-- isset() --
$def1bool(false) 
$def2=0 :bool(true) 
$def3=false :bool(true) 
$def4='' :bool(true) 
$def5=array() :bool(true) 
$def5=null :bool(false)
-- is_null() --
$def1 Notice: Undefined variable: def1 in C:\Users\Sunn\Desktop\yii\yii\apps\blog\index.php on line 35 Call Stack: 0.0037 135992 1. {main}() C:\Users\Sunn\Desktop\yii\yii\apps\blog\index.php:0 bool(true) 
$def2=0 :bool(false) 
$def3=false :bool(false) 
$def4='' :bool(false) 
$def5=array() :bool(false) 
$def5=null :bool(true)
-- empty() --
$def1bool(true) 
$def2=0 :bool(true) 
$def3=false :bool(true) 
$def4='' :bool(true) 
$def5=array() :bool(true) 
$def5=null :bool(true)

 

isset():變數是否設定了有效值(變數存在且不為NULL)

is_null:變數是否為NULL(變數未宣告也算,會有錯誤提示)

empty():這個不太友好,標準型別的預設值,被認為空。

 

 

總結:isset()   is_null()    empty()  — isset()包容性比較高,其次是is_null,我會根據實際情況嚴格程度進行使用。

 

二、defined:檢查某個名稱的常量是否存在,這個函式是檢測常量的。

1 define("NAME","sc");
2     echo('--   Const: NAME   --');
3     echo("<br/>");
4     echo("NAME  :");
5     var_dump(defined('NAME'));
6     var_dump(NAME);

 

輸出:

-- Const: NAME --
NAME :bool(true) string(2) "sc" 
is_null : bool(false)

相關文章