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 '$var is either 0 or not set at all'; } // 结果为 false,因为 $var 已设置 if (!isset($var)) { echo '$var is not set at all'; } ?>要說它們的聯繫,其共同點就是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 函數