php中函數 isset(), empty(), is_null() 的區別

轉載至:http://blog.csdn.net/jiaobuchong/article/details/41807011


先來看看php的 PHP type comparison tables:

可參考http://php.net/manual/en/types.comparisons.php





NULL:
當你在你的腳本中寫下這樣一行代碼

[php] view plain copy
  1. $myvariable;   //此處你想定義一個變量,但未賦值。會有Notice: Undefined variable  
  2. echo $myvariable + 3;  //使用這個變量出現:Notice: Undefined variable: myvariable in  
如果將其改寫成:
[php] view plain copy
  1. $myvariable = NULL;   
  2. echo $myvariable + 3;   //這樣就不會有問題了  
所以得出在你的腳本在使用一個變量時最好賦一個默認值,如果你不想,就可以將NULL賦給變量,表示這個變量已經定義但沒有值,屬於NULL類型。

is_null():
bool is_null ( mixed $var )   (php.net官方文檔的函數定義)
當參數滿足下面三種情況時,is_null()將返回TRUE,其它的情況就是FALSE
1、它被賦值爲NULL
2、它還沒有賦值
3、它未定義,相當於unset(),將一個變量unset()後,不就是沒有定義嗎
讓我們來看一些例子:
[php] view plain copy
  1. $myvar = NULL;   
  2. var_dump(is_null($myvar)); // TRUE  
  3. $myvar1;           
  4. var_dump(is_null($myvar1)); // TRUE  Notice: Undefined variable  
  5. $num = 520;  
  6. unset($num);  
  7. var_dump(is_null($num));  //TRUE Notice: Undefined variable  
  8. var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable  
  9.   
  10. $myvar = 0; is_null($myvar);     // FALSE  
  11. $myvar = FALSE; is_null($myvar); // FALSE  
  12. $myvar = '';  is_null($myvar);   // FALSE  

isset():
bool isset ( mixed $var [, mixed $... ] ),參數是一個變量
檢測參數已設定,並且不是NULL。如果沒有設置變量,變量未賦值,或變量被設爲NULL,isset()函數就返回NULL。
正好和is_null()函數相反,is_null()爲TRUE的情況在isset()中就爲FALSE。有意思!
如果傳遞多個參數,將取交集。即所有參數全部符合 isset() 時才返回 TRUE。
似乎讓人感覺有點困惑,來看一些例子:
[php] view plain copy
  1. $myvar = NULL; isset($myvar); //  FALSE 當一個變量被賦值爲NULL時,就表示這個變量沒有值  
  2. $myvar = 0; isset($myvar);     //   TRUE  
  3. $myvar = FALSE; isset($myvar); // TRUE  
  4. $myvar = '';  isset($myvar); //  TRUE  
  5. isset($some_undefined_var); //  FALSE Undefined variable  
可以看出isset()着重檢測一個 變量是否設置和這個變量是否有具體的值,當變量滿足這兩種情況時isset()返回TRUE

defined():

bool defined ( string $name )
檢測是否設置常量

empty():
bool empty ( mixed $var )
判讀變量是否爲空。
請見上面的類型比較表empty()那一列你就明白哪些情況是空的情形了。還有其他一些函數的參照。
來看一些例子:
[php] view plain copy
  1. $myvar = NULL; empty($myvar); // TRUE  
  2. $myvar = 0; empty($myvar); // TRUE  
  3. $myvar = FALSE; empty($myvar); // TRUE  
  4. $myvar = '';  empty($myvar); // TRUE  
  5. empty($some_undefined_var); // TRUE  
empty()爲TRUE的情況,若變量不存在,或者變量存在且其值爲""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 TURE。
一般如!empty()的判斷,就是變量存在,且值不爲""、0、"0"、NULL、FALSE、array()以及只是單純定義一個變量$var。
發佈了22 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章