兩者都是測試變數用的。
isset()是測試變數是否被賦值;
empty()是測試乙個已經被賦值的變數是否為空。注意:
如果乙個變數沒被賦值就引用在php裡是被允許的,但會有notice提示。如果乙個變數被賦空值,$foo=」「或者$foo=0或者$foo=false,那麼empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會登出乙個變數。要登出乙個變數,可以用 unset($foo)或者$foo=null。
誤區:當乙個變數值等於0時,empty()也會成立(true),因而會發生一些意外。原來,empty 和 isset 雖然都是變數處理函式,它們都用來判斷變數是否已經配置,它們卻是有一定的區別:empty還會檢測變數是否為空、為零。當乙個變數值為0,empty 認為這個變數同等於空,即相當於沒有設定,而isset則認為變數已生成,返回true。
比如檢測 $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
empty用於判斷是否為空, 空的概念非常廣泛, 包括:
(1)數字0;
(2)空的字元;
(3)定義為null的變數;
(4)定義為false的變數;
(5)空陣列;
(6)未定義變數。
更重要的, empty只能判斷變數, 而不能判斷其他任何形式的內容, 也就是說
empty(false);會觸發乙個錯誤, 而不是返回true
php的isset()函式 一般用來檢測變數是否設定
功能:檢測變數是否設定
返回值:
若變數不存在則返回 false
若變數存在且其值為null,也返回 false
若變數存在且值不為null,則返回 ture
同時檢查多個變數時,每個單項都符合上一條要求時才返回 true,否則結果為 false
更多說明:
使用 unset() 釋放變數之後,它將不再是 isset()。
php函式isset()只能用於變數,傳遞任何其它引數都將造成解析錯誤。
檢測常量是否已設定可使用 defined() 函式。
php的empty()函式 判斷值為否為空
功能:檢查乙個變數是否為空
返回值:
若變數不存在則返回 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() 函式。
php中isset 和empty 區別
1 isset 用於檢測變數是否設定值 若變數不存在則返回 false 若變數存在且其值為null,也返回 false 若變數存在且值不為null,則返回 ture 同時檢查多個變數時,每個單項都符合上一條要求時才返回 true,否則結果為 false empty 用於檢測變數是否為空 若變數不存在...
php中isset和empty區別
php語言isset和empty的區別 empty 判斷乙個變數是否為 空 isset 判斷乙個變數是否已經設定。正是這種所謂的 顧名思義 令我開始時走了些彎路 1.當乙個變數值等於0時,empty 也會成立 true 因而會發生一些意外。原來,empty 和 isset 雖然都是變數處理函式,它們...
php中isset與empty函式的困惑與用法分析
在學習p有一段時間之後,感覺自己的基礎知識還是有點不牢固,有的問題就不怎麼知道,比如就有乙個,在判斷乙個變數是否為空的情況下,我就不知道是用isset 還是empty 今天我就來分析該用哪個函式。isset 用於判斷乙個函式是否被設定過,如果設定過就為true,否則就為false,但是有乙個例外,就...