iT邦幫忙

DAY 11
2

遭遇PHP之經驗分享系列 第 11

[鐵人賽Day11]在PHP中isset、empty、is_null的使用差別

上一篇「[鐵人賽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);
?>

輸出後結果如下圖所示:


上一篇
[鐵人賽Day10]PHP簡易分頁實作
下一篇
[鐵人賽Day12]PHP的簡寫標籤與使用方式
系列文
遭遇PHP之經驗分享30

尚未有邦友留言

立即登入留言