在php中empty(), isset(), is_null()三個函數在很多朋友看來都差不多,但我們簡單想一下好像又不同,一個空值,一個是否是一個變數,是否為null,下面我來舉例來說明。
很多人對於 PHP 的 empty(),isset() 及 is_null() 三個函數的用法比較模糊,網上的資料也很多,但未必能講的清楚,下面給出一個測試執行個體,對於理解這三個函數的區別會有很大的好處。
測試的類型如下:
$a;
$b = false;
$c = '';
$d = 0;
$e = null;
$f = array();
?>
empty()
| 代碼如下 |
複製代碼 |
var_dump(empty($a)); var_dump(empty($b)); var_dump(empty($c)); var_dump(empty($d)); var_dump(empty($e)); var_dump(empty($f)); ?> // 輸出 bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) |
從代碼中可以看出,只要資料類型是否為空白或假,empty()就輸出true。
isset()
| 代碼如下 |
複製代碼 |
var_dump(isset($a)); var_dump(isset($b)); var_dump(isset($c)); var_dump(isset($d)); var_dump(isset($e)); var_dump(isset($f)); ?> // 輸出 bool(false) bool(true) bool(true) bool(true) bool(false) bool(true) |
可以看出isset()只能用來判斷是否為NULL和未定義。
警告: isset() 只能用於變數,因為傳遞任何其它參數都將造成解析錯誤。若想檢測常量是否已設定,可使用 defined()函數。
當要 判斷一個變數是否已經聲明的時候 可以使用 isset 函數
當要 判斷一個變數是否已經賦予資料且不為空白 可以用 empty 函數
當要 判斷 一個變數 存在且不為空白 先isset 函數 再用 empty 函數
比如檢測 $id 變數,當 $id=0 時,用empty() 和 isset() 來檢測變數 $id 是否已經配置,兩都將返回不同的值—— empty() 認為沒有配置,isset() 能夠取得 $id 的值:
| 代碼如下 |
複製代碼 |
$id=0; empty($id)?print "It's empty .":print "It's $id ."; //結果:It's empty . print " "; !isset($id)?print "It's empty .":print "It's $id ."; //結果:It's 0 . |
這意味著,我們在使用變數處理函數時,當該變數可能出現0的值,使用 empty() 要小心,這個時候用 isset 取代它更明智一些。
當一個php頁面的 URL 尾部參數出現 id=0 時(比如:test.php?id=0),試比較:
| 代碼如下 |
複製代碼 |
if(empty($id)) $id=1; - 若 id=0 ,id 也會為1 if(!isset($id)) $id=1; - 若 id=0 ,id 不會為1
|
可分開運行以下代碼檢測上述推斷:
| 代碼如下 |
複製代碼 |
if(empty($id)) $id=1; print $id; // 得到 1
if(!isset($id)) $id=1; print $id; //得到 0 |
is_null()
| 代碼如下 |
複製代碼 |
var_dump(is_null($a)); var_dump(is_null($b)); var_dump(is_null($c)); var_dump(is_null($d)); var_dump(is_null($e)); var_dump(is_null($f)); ?> // 輸出 bool(true) bool(false) bool(false) bool(false) bool(true) bool(false) |
is_null 字面意思了。
由此可見 empty() 可以用來判定所有的資料類型是否為空白或假,而 is_null 與 isset 基本一樣,只能用來判斷是否為NULL和未定義。
後來給大家附一張表
下面一張表可以很清楚的說明他們之間的關係:
變數 empty is_null isset
$a=”” true false true
$a=null true true false
var $a true true false
$a=array() true false true
$a=false true false true
$a=15 false false true
$a=1 false false true
$a=0 true false true
$a=”0” true false true
$a=”true” false false true
$a=”false” false false true
http://www.bkjia.com/PHPjc/445604.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445604.htmlTechArticle在php中empty(), isset(), is_null()三個函數在很多朋友看來都差不多,但我們簡單想一下好像又不同,一個空值,一個是否是一個變數,是否為n...