1、is_null 和isset
這兩個函數都可以判斷一個變量是否為null,它們對空字符串,0,false的認同是一樣的.
is_null = !isset();
不同的是 isset是語法結構,is_null 是函數。就性能而言,語法結構相對優秀一點。所以很多地方推薦使用isset代替is_null的使用
2、== 和 ===
在有些情況下,推薦使用isset來判斷一個變量是否為null
但是從語法上來說,一個變量 "是否已顯示初始化" 和 "是否為null" 是不同的概念,在某些場景下使用isset是不合適的,比如檢查一個函數的返回值是否為null。
此時可以使用 "==" 和 "===" 來判斷它們是否為null
對於"==" 和"===",它們直接的區別還是很大的。對於"==",它認同空字符串,0,false都為Null。而對於"===",只有一個變量真的為null,它才代表null
另外 "==="相對於isset來說,性能要好一些
3、判斷一個變量是否為null直接用"==="就可以了
4、empty 判斷一個變量所存儲的內容是否為零或者為空, 0、"0"、null、false、array()、var $var ,以及沒有任何屬性的對象都被認為是空的,都代表了為零。
如果$a是未定義或值為NULLL,$a=NULL,它肯定是空,即empty($a)=true; 如果$a是int類型,$a=0,就相對於數字,0代表為零,即empty($a)=true;
如果$a是string類型,$a="",相對於字符串,"" 就代表為是空,即empty($a)=true; 如果$a是string類型,$a="0",相對於字符串,"0"就代表為是零,即empty($a)=true;
如果$a是bool類型,$a=false,相對true,false就代表為空,即empty($a)=true; 如果$a是array類型,$a=array(),相對數組來說,沒有元素的數據就為空,即empty($a)=true;