使用empty()判斷數(shù)字0的時候,empty()也會返回true,就是說如果你的變量有可能出現(xiàn)數(shù)字0這個變量,要使用isset()來判斷會好一些!!
從表面上看,很容易誤解empty()函數(shù)是判斷字符串是否為空的函數(shù),其實并不是,我也因此吃了很多虧。
empty()函數(shù)是用來測試變量是否已經(jīng)配置。若變量已存在、非空字符串或者非零,則返回 false 值;反之返回 true值。所以,當(dāng)字符串的值為0時,也返回true,就是執(zhí)行empty內(nèi)部的語句,這就是陷阱。
代碼如下:
勸告各位,千萬注意使用empty()函數(shù)。
* 格式: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()函數(shù)是判斷字符串是否為空的函數(shù),其實并不是,我也因此吃了很多虧。 empty()函數(shù)是用來測試變量是否已經(jīng)配置。若變量已存在、非空字符串或者非零,則返回 false 值;反之返回 true值。
所以,當(dāng)字符串的值為0時,也返回true,就是執(zhí)行empty內(nèi)部的語句。這就是陷阱。如:假設(shè) $value = 0; 則empty($value)=false。勸告各位,千萬注意使用empty()函數(shù)。
判斷字符串是否為空,可以這么判斷: if ($value=="") ... 格式: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
當(dāng)你使用empty檢查一個函數(shù)返回的結(jié)果時會報錯:Fatal error: Can't use function return value in write context
例如,代碼如下:echo empty(strlen('be-evil.org'));
到PHP手冊里面查看,在empty函數(shù)描述的地方有以下文字:Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).
empty() 只檢測變量,檢測任何非變量的東西都將導(dǎo)致解析錯誤!因此,我們不能拿empty來直接檢測函數(shù)返回的值,上面例子的解決方案如下: