咱們在作判斷的時候常常用到is_null、is_bool、empty、is_set等判斷函數,可是這麼多的判斷函數到底用哪個,他們之間有什麼區別嗎,可能不少人php老鳥說到這裏也有點含糊,如今咱們就一一來討論它們。php
is_null、is_bool:何時用這樣的函數呢?is_null,is_bool,這裏的is我麼能夠解釋爲「是否是」,是否是null,是否是bool呢?這樣我麼就容易理解這樣的函數了,所以咱們只須要明白nill的定義是什麼,bool的定義是什麼,下面的這些狀況是被php看做是null的:數組
1:被賦值爲 NULL函數
如:spa
$a =NULL; echo is_null($a); //output 1
2:還沒有被賦值code
如:字符串
$a; echo is_null($a); //output 1
3:被 unset()string
如:io
$a =」string」; unset($a); echo is_null($a)//output 1
上面的這三種狀況是被php認爲是null的,因此就會輸出真了1class
爲bool的狀況就只有一種,就是當變量的值是true或false,不區分大小寫變量
如:
$a =true; echo is_bool($a);//output 1
注意:若是所給的變量不是布爾類型,那麼什麼也不會輸出,只有是布爾類型的時候纔會輸出true,僅此一個值。若是$a的值是0或者1,他們不是布爾類型,什麼也不會輸出,不要混淆了這點。
除了is_null is_bool 外還有不少相似的函數 is_float is_int is_string 等函數,分析和上面分析相同。
empty:
empty的用法相信你們都很熟悉,下面說下,什麼狀況下empty($var)會輸出true
1:變量的值爲空 $var = 「」;
2:變量的值爲字符串0或者數字0 $var = 0 ; 或者$var =」0″
3:變量的值爲flase $var= flase;
4:凡是爲NULL的 都爲空 爲null的狀況我上面已經講過了 這裏再也不重複
5:空數組 $arr =array();
6:變量只定義不賦值 $var;
若是知足上面的一條那麼empty就會輸出true,empty在php中很重要,它對於咱們程序的嚴謹性多了一層保證。
isset
不少人對於isset和empty的區別不是很明白,或者比較模糊,其實empty的做用能力比isset強,怎麼這樣說呢?假若有一個變量,咱們前面沒有定義,就直接來使用
isset($var);//there is a quertion here! empty($var);//output 1
isset常常用於判斷unset的變量,若是一個變量被unset了,那麼能夠用isset來判斷
不少細節問題 還須要修改.