涉及到判斷時,經常是憑感覺或者經驗,稍微總結下幾個常用的方法及判斷方式。參考了這兩篇部落格,并總結了下。
參考一
參考二
話不多說,先上代碼
$a;
$b = false;
$c = '';
$d = ;
$e = null;
$f = array();
- isset
echo '=========isset=============';
var_dump(isset($a)); // $a
var_dump(isset($b)); // $b = false
var_dump(isset($c)); // $c = '';
var_dump(isset($d)); // $d =
var_dump(isset($e)); // $e = null
var_dump(isset($f)); // $f = array();
結果
- is_null
echo '=========is_null=============';
var_dump(is_null($a)); // $a
var_dump(is_null($b)); // $b = false
var_dump(is_null($c)); // $c = '';
var_dump(is_null($d)); // $d =
var_dump(is_null($e)); // $e = null
var_dump(is_null($f)); // $f = array();
結果:警告忽略不讨論,以下都一樣
- empty
echo '=========empty=============';
var_dump(empty($a)); // $a
var_dump(empty($b)); // $b = false
var_dump(empty($c)); // $c = '';
var_dump(empty($d)); // $d =
var_dump(empty($e)); // $e = null
var_dump(empty($f)); // $f = array();
結果
- !!
echo '========= !! =============';
var_dump(!!$a); // $a
var_dump(!!$b); // $b = false
var_dump(!!$c); // $c = '';
var_dump(!!$d); // $d = ;
var_dump(!!$e); // $e = null;
var_dump(!!$f); // $f = array();
結果
- 是否==null
echo '========= 是否等于null =============';
var_dump($a==null); // $a
var_dump($b==null); // $b = false
var_dump($c==null); // $c = '';
var_dump($d==null); // $d = ;
var_dump($e==null); // $e = null;
var_dump($f==null); // $f = array();
結果
- 是否等于0
echo '========= 是否等于0 =============';
var_dump($a==); // $a
var_dump($b==); // $b = false
var_dump($c==); // $c = '';
var_dump($d==); // $d = ;
var_dump($e==); // $e = null;
var_dump($f==); // $f = array();
結果
各情況結果如圖
類别 | isset | is_null | empty | !! | ==null | ==0 |
---|---|---|---|---|---|---|
$a | false | true | true | false | true | true |
$b = false | true | false | true | false | true | true |
$c = ”; | true | false | true | false | true | true |
$d = 0; | true | false | true | false | true | true |
$e = null; | false | true | true | false | true | true |
$f = array(); | true | false | true | false | true | false |
總結
- isset判斷是否已經存在,隻有未做指派操作或者值為null的才傳回 false
- is_null的判斷依據與isset相同,但是傳回值相反
- empty判斷是否為空,兩種情況下傳回true,第一,不存在的一定為空(即isset傳回為false的),包括 $a; $e=null;第二,存在的,但是值為空的,$b = false;$c =”; $d = 0;$f = array();
- !!與empty情況一緻,傳回結果相反
- 是否==null 與empty情況一緻
- 是否==0,除去數組情況外,對無聲明,整型和字元串的判斷 與 empty相同
注意
對涉及到整型的判斷時,要單獨檢視0的情況