轉載至:http://blog.csdn.net/jiaobuchong/article/details/41807011
先來看看php的 PHP type comparison tables:
可參考http://php.net/manual/en/types.comparisons.php
NULL:
當你在你的腳本中寫下這樣一行代碼
- $myvariable; //此處你想定義一個變量,但未賦值。會有Notice: Undefined variable
- echo $myvariable + 3; //使用這個變量出現:Notice: Undefined variable: myvariable in
- $myvariable = NULL;
- echo $myvariable + 3; //這樣就不會有問題了
is_null():
bool is_null ( mixed $var ) (php.net官方文檔的函數定義)
當參數滿足下面三種情況時,is_null()將返回TRUE,其它的情況就是FALSE
1、它被賦值爲NULL
2、它還沒有賦值
3、它未定義,相當於unset(),將一個變量unset()後,不就是沒有定義嗎
讓我們來看一些例子:
- $myvar = NULL;
- var_dump(is_null($myvar)); // TRUE
- $myvar1;
- var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable
- $num = 520;
- unset($num);
- var_dump(is_null($num)); //TRUE Notice: Undefined variable
- var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable
- $myvar = 0; is_null($myvar); // FALSE
- $myvar = FALSE; is_null($myvar); // FALSE
- $myvar = ''; is_null($myvar); // FALSE
isset():
bool isset ( mixed $var [, mixed $... ] ),參數是一個變量
檢測參數已設定,並且不是NULL。如果沒有設置變量,變量未賦值,或變量被設爲NULL,isset()函數就返回NULL。
正好和is_null()函數相反,is_null()爲TRUE的情況在isset()中就爲FALSE。有意思!
如果傳遞多個參數,將取交集。即所有參數全部符合 isset() 時才返回 TRUE。
似乎讓人感覺有點困惑,來看一些例子:
- $myvar = NULL; isset($myvar); // FALSE 當一個變量被賦值爲NULL時,就表示這個變量沒有值
- $myvar = 0; isset($myvar); // TRUE
- $myvar = FALSE; isset($myvar); // TRUE
- $myvar = ''; isset($myvar); // TRUE
- isset($some_undefined_var); // FALSE Undefined variable
defined():
bool defined ( string $name )
檢測是否設置常量
empty():
bool empty ( mixed $var )
判讀變量是否爲空。
請見上面的類型比較表empty()那一列你就明白哪些情況是空的情形了。還有其他一些函數的參照。
來看一些例子:
- $myvar = NULL; empty($myvar); // TRUE
- $myvar = 0; empty($myvar); // TRUE
- $myvar = FALSE; empty($myvar); // TRUE
- $myvar = ''; empty($myvar); // TRUE
- empty($some_undefined_var); // TRUE
一般如!empty()的判斷,就是變量存在,且值不爲""、0、"0"、NULL、FALSE、array()以及只是單純定義一個變量$var。