上一篇「[鐵人賽Day10]PHP簡易分頁實作」中,有提到說要用isset()來鋪今天的鐵人賽文章
但除了isset外,經常被拿來比較的還有empty跟is_null,那到底差別在哪呢,讓我們繼續看下去
首先,要來介紹
isset():檢查變數是否有設置
使用方法:isset($var);
(參考資料:http://php.net/manual/en/function.isset.php)
empty():檢查變數是否為空值
使用方法:empty($var);
(參考資料:http://php.net/manual/en/function.empty.php)
is_null():檢查變數是否為null
使用方法:is_null($var);
(參考資料:http://php.net/manual/en/function.is-null.php)
簡單來說,isset()檢查的是「變數」存不存在,而empty()檢查的是變數內的「值」是否為空
通常這兩個函數最容易弄混淆
然而,官方很貼心的整理了這三個函式在各種情況下會出現的情況,在以下網址
(來源資料:http://php.net/manual/en/types.comparisons.php)
而筆者自己也實際測試了一下,有興趣的讀者可以複製到自己的環境底下去執行,程式碼如下;
「isset_empty.php」
<?php
header("Content-Type:text/html; charset=utf-8");
function check($value){
if(isset($value)){
echo "isset()判定值有設置<br />";
}else{
echo "isset()判定值未設置<br />";
}
if(empty($value)){
echo "empty()判定未有值<br />";
}else{
echo "empty()判定有值<br />";
}
if(is_null($value)){
echo "is_null()判定未有值<br />";
}else{
echo "is_null()判定有值<br />";
}
}
echo "設定value1值為字串<hr />";
$value1='test';
check($value1);
echo "<br />";
echo "設定value1值為null<hr />";
$value1=null;
check($value1);
echo "<br />";
echo "設定value1值為空陣列<hr />";
$value1=array();
check($value1);
echo "<br />";
echo "註銷value1值<hr />";
unset($value1);
@check($value1);
echo "<br />";
echo "設定value1值為0<hr />";
$value1="0";
check($value1);
?>
輸出後結果如下圖所示: