PHP中empty()和isset()的區別
1、empty函數
用途:檢測變量是否為空
判斷:如果 var 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認為是空的,如果 var 為空,則返回 TRUE。來源手冊:http://php.net/manual/zh/function.empty.php
注意:empty() 只檢測變量,檢測任何非變量的東西都將導致解析錯誤。
$name=0;
$name='';
$name=null;
$name="0";
$name;
if(empty($name))
{
echo "ok"; //上面五種寫法empty($name)都是 true
}
if(empty($na)) //結果為 true 由於變量$na未定義
2、isset函數
用途:檢測變量是否設置
判斷:檢測變量是否設置,並且不是 NULL。如果已經使用 unset() 釋放了一個變量之後,它將不再是 isset()。若使用 isset() 測試一個被設置成 NULL 的變量,將返回 FALSE。同時要注意的是一個NULL 字節("\0")並不等同於 PHP 的 NULL 常數。
isset 函數是用於檢測這個變量是否設置過,在下面兩種情況下會認為 isset為假
①$id; 沒有給任何值
②或者就是根本沒有定義.
因此我們建議在 判斷某個表單是否提交有數據,使用isset來判斷if(isset($_GET/$_POST['變量']){echo $_GET['變量']}else{ echo '沒有傳遞數據'}
例子:
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = '';
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());
echo empty($a1) ? ‘true’ : ‘false’;//輸出true
echo empty($a2) ? ‘true’ : ‘false’;//輸出true
echo empty($a3) ? ‘true’ : ‘false’;//輸出true
echo empty($a4) ? ‘true’ : ‘false’;//輸出true
echo empty($a5) ? ‘true’ : ‘false’;//輸出true
echo empty($a6) ? ‘true’ : ‘false’;//輸出false
echo empty($a7) ? ‘true’ : ‘false’;//輸出true
echo empty($a8) ? ‘true’ : ‘false’;//輸出false
echo ‘<br/>’;
echo isset($a1) ? ‘true’ : ‘false’;//輸出false
echo isset($a2) ? ‘true’ : ‘false’;//輸出true
echo isset($a3) ? ‘true’ : ‘false’;//輸出true
echo isset($a4) ? ‘true’ : ‘false’;//輸出true
echo isset($a5) ? ‘true’ : ‘false’;//輸出true
echo isset($a6) ? ‘true’ : ‘false’;//輸出true
echo isset($a7) ? ‘true’ : ‘false’;//輸出true
echo isset($a8) ? ‘true’ : ‘false’;//輸出true
1、isset值對於變量沒有賦值或者賦值為NULL時判斷false,其余都是true;
2、empty需要注意點比較多,要根據函數的定義來做判斷.