開發中經常會遇到驗證某個引數是否是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)