PHP中isset 與empty 函式的區別

2021-07-15 01:30:02 字數 2090 閱讀 2149

兩者都是測試變數用的。

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,但是有乙個例外,就...