首頁 >後端開發 >php教程 >PHP isset()與empty()的使用差異詳解

PHP isset()與empty()的使用差異詳解

巴扎黑
巴扎黑原創
2016-11-21 15:03:471209瀏覽

PHP的isset()函數一般用來偵測變數是否設定

格式:bool isset ( mixed var [, mixed var [, ...]] ) 
功能:偵測變數是否設定 
回傳值:若 
變數不存在則回傳FALSE 
若變數存在且其值為NULL,也回傳FALSE 
若變數存在且值不為NULL,則回傳TURE 
同時檢查多個變數時,每個單一項目都符合上一條要求時才傳回TRUE ,否則結果為FALSE 
版本:PHP 3, PHP 4, PHP 5 
更多說明: 
使用unset() 釋放變數之後,它將不再是isset()。 
PHP函數isset()只能用於變量,傳遞任何其它參數都會造成解析錯誤。 
偵測常數是否已設定可使用 defined() 函數。

PHP的empty()函數判斷值為否為空

格式:bool empty ( mixed var ) 
功能:檢查一個變數是否為空 
回傳值: 
若變數不存在則傳回TRUE其值為""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回TURE 
若變量存在且值不為""、0、"0 "、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回FALSE 
版本:PHP 3, PHP 4, PHP 5 
更多說明: 
empty()的回傳值=! (boolean) var,但不會因為變數未定義而產生警告訊息。請參閱轉換為布林值以獲取更多資訊。 
empty() 只能用於變量,傳遞任何其它參數都會造成Paser error而終止運行。 
偵測常數是否已設定可使用 defined() 函數。
例子: empty() 與isset() 的一個簡單比較 

 

Php程式碼 

<?php   
$var = 0;   
// 结果为 true,因为 $var 为空   
if (emptyempty($var)) {   
echo &#39;$var is either 0 or not set at all&#39;;   
}   
// 结果为 false,因为 $var 已设置   
if (!isset($var)) {   
echo &#39;$var is not set at all&#39;;   
}   
?>

要說它們的聯繫,其共同點就是empty()和isset()都是變數處理函數,作用是判斷變數是否已經配置,正是由於它們在處理變數過程中有很大的相似性,才導致對它們的關係認識不足。單從 empty()和isset()這兩個函數本身來考慮的話會把人弄得更糊塗,換一個角度來它。 empty()和isset()的處理對象無外乎未定義變量,0,空字串。

如果變數為0,則empty()會回傳TRUE,isset()會回傳TRUE; 
如果變數為空字串,則empty()會回傳TRUE,isset()會回傳TRUE; 
如果變數未定義,則empty()會回傳TRUE,isset()會回傳FLASE; 

手冊中對empty()的解釋如下: 
描述bool empty( mixed var ) 
如果var 為非空白或非零的值,則empty()返回FALSE。換句話說,”"、0、”0″、NULL、FALSE、array()、var $var; 以及沒有任何屬性的物件都將被視為空的,如果 var 為空,則傳回 TRUE。 
手冊中對isset()的解釋如下: 
isset()偵測變數是否設定 
描述bool isset ( mixed var [, mixed var [, ...]] ) 
如果 var 存在則傳回 FALSEUE,否則回傳 FALSEUE。 

如果已經使用 unset() 釋放了一個變數之後,它將不再是 isset()。若使用 isset() 測試一個被設定為 NULL 的變量,將會傳回 FALSE。同時要注意的是一個 NULL 位元組(”?”)並不等同於 PHP 的 NULL 常數。 
警告: isset() 只能用於變量,因為傳遞任何其它參數都會造成解析錯誤。若想要偵測常數是否已設置,可使用 defined()函數。

當要判斷一個變數是否已經宣告的時候可以使用isset 函數 
當要判斷一個變數是否已經賦予資料且不為空可以用empty 函數 
當要判斷一個變數存在且不為空先isset 函數再用empty 函數


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn