首頁  >  文章  >  後端開發  >  淺談PHP中isset()、empty()、is_null()的區別

淺談PHP中isset()、empty()、is_null()的區別

青灯夜游
青灯夜游轉載
2021-06-25 18:39:534043瀏覽

在PHP中,isset()、empty()和is_null()都可用來測試變數的值,那麼它們之間有什麼差異呢?下面本篇文章就來比較一下這三個函數,了解它們的差異。

淺談PHP中isset()、empty()、is_null()的區別

讓我們從一些定義開始。

  • isset() : 你可以用isset() 來決定一個變數是否被聲明,並且與 null 不同。

  • empty() : 它用來決定變數是否存在,且變數的值沒有評估為false

  • is_null() : 這個函數用來檢查一個變數是否是null

PHP isset() vs empty()

正如我們從定義中看到的,如果我們之前定義了該變數並將其值設為NULL 以外的值,那麼isset() 將傳回true 。這可以包括0 ,一個空字串或false 。另一方面,只要變數的值被設定為falseempty() 就會回傳true ,我們稱這些值為 "假值"。錯誤值的例子包括:0 ,空字串"" 和字串"0" ,空數組NULL ,當然還有布林值false

isset()empty() 之間的一個相似之處是,它們都是語言結構,因此不能使用變數函數來呼叫。

下面的程式碼片段應該可以解釋這兩者之間的差異。

<?php

$fruit = &#39;&#39;;

if(isset($fruit)) {
    echo &#39;Do you like &#39;.$fruit.&#39;?&#39;;
}
// Output:  Do you like ?

if(!empty($fruit)) {
    echo &#39;Do you like &#39;.$fruit.&#39;?&#39;;
}
// No Output

?>

請注意,empty() 可以使用isset() 函數來寫。

<?php

function my_empty($x) {
  return !isset($x) || $x == false
}

當然,通常只是使用內建的empty() 函數更容易。

PHP isset() vs is_null()

如果一個變數的值被明確地設定為NULL ,則is_null() 函數傳回 true# 。否則,它只是回傳false 。另一方面,只要定義了一個變量,且其值不是 NULLisset() 將傳回true

下面是一個基本的例子來說明它們之間的差異。

<?php

$fruit = NULL;

if(isset($fruit)) {
    echo &#39;Do you like &#39;.$fruit.&#39;?&#39;;
}
// No Output

if(is_null($fruit)) {
    echo &#39;There is no fruit.&#39;;
}
// Output: There is no fruit.

?>

PHP empty() vs is_null()

如果一個變數的值被評估為 falseempty() 函數將傳回 true。這可能意味著空字串,NULL ,整數0 ,或一個沒有元素的陣列。另一方面,只有當變數的值為NULLis_null() 才會傳回true

下面是一個基本的例子來說明它們之間的差異。

<?php

$fruit = NULL;

if(isset($fruit)) {
    echo &#39;Do you like &#39;.$fruit.&#39;?&#39;;
}
// No Output

if(is_null($fruit)) {
    echo &#39;There is no fruit.&#39;;
}
// Output: There is no fruit.

?>

需要記住的重要事項

有兩個提示,你可以用來寫更簡潔的程式碼,並在將來避免錯誤。

1.與empty()is_null() 不同,你可以一次傳遞多個值給isset() ,同時檢查其中是否有未定義或設定為NULL 。在這種情況下,isset() ,只有在傳遞的值都不是NULL ,才會傳回 true

2.2. 不要使用 == 來檢查一個值是否是NULL 。這將會給像空字串這樣的評估為false 的值帶來錯誤的肯定。

推薦學習:《PHP影片教學

以上是淺談PHP中isset()、empty()、is_null()的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除