對于初學php的人來說,empty()和和isset()用法的差別是很難搞清楚的,他們的用法的差别不仔細去琢磨的話确實很難弄清楚。
先說一下他們的共同點:
都可以判定一個變量是否為空;
都傳回boolean類型,即true或false。
下面具體說一下他們用法之間的差別:
isset()用來檢測變量是否設定,隻能用于變量,因為傳遞任何其它參數都将造成解析錯誤。若想檢測常量是否已設定,可使用 defined() 函數。如果已經使用 unset() 釋放了一個變量之後,它将不再是 isset()。若使用 isset() 測試一個被設定成 NULL 的變量,将傳回 FALSE。(注意的是一個 NULL 位元組("\0")并不等同于 PHP 的 NULL 常數)
empty()用來檢查一個變量是否為空。
他們之間最大的差別就是對于0的判斷,若用empty判斷會認為是空,用isset則認為不為空,舉個例子:
<?php
var $a=0;
//empty($a)傳回true
if(empty($a)){
echo "判斷結果是空"
}
//isset($a)傳回true
if(isset($a)){
echo "判斷結果不是空"
?>
-----------------------------------------------------------------------------
isset檢視一個變量是否已經被設定并且不為空(Determine if a variable is set and is not NULL)
empty檢視一個變量是否為空 ""、0、"0"、NULL、FALSE、array()、$var($var是一個沒有指派的變量)
另外需要注意的是從PHP5.5開始,empty()隻能支援變量,其他任何東西傳遞進來都将會導緻介解析錯誤。
換句話說,像下面的這個表達式将不再湊效empty(trim($name))。我們應該用trim($name) == false來代替它來做判斷
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauEmNwQmZkNGNjRWNxYTO1ITZkJ2MhNWOkFzNyIGMwkTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpg)
上面代碼的執行結果
如何聯系我:【萬裡虎】www.bravetiger.cn
【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/