天天看點

c判斷數組是否為空_3分鐘短文 | PHP判斷null,别再 == 了,你真控制不住

引言

PHP 程式中很多地方會用到判斷是否為空,比如字元串為空,數組為空,對象為空,或者其他資料類型為預設空值。

c判斷數組是否為空_3分鐘短文 | PHP判斷null,别再 == 了,你真控制不住

今天我們說一下判斷 null 的兩種方法的差別。一般可以使用 is_null 函數,判斷變量是否是 null,還可以使用 === null 判斷是否與 null 值絕對相等。

這兩者有什麼差別呢?

學習時間

比如有一個 if 語句要判斷某個變量是否為 null,有下面兩種寫法:

if (is_null($var)) do_something();
if ($var === null) do_something();
           

到底哪種方式更優,效率更高?

這裡有個前提,隻要是變量經過初始化,兩種方式相同。隻不過,is_null 還要加上函數調用的開銷,而 === 則直接執行條件判斷操作,效率更高。

===

用于嚴格的資料比較。NULL隻有一個“值”,是以可以與NULL(這是null“值”的PHP常量)進行比較。

is_null

正在檢查變量是否為NULL資料類型。

因為PHP是腳本語言,其資料類型動态指定,那麼有必要梳理一下各種空值在做運算時候的傳回值了:

c判斷數組是否為空_3分鐘短文 | PHP判斷null,别再 == 了,你真控制不住

特别需要指出的是,empty 函數相當于 == null,而 is_null 相當于 === null,後者比較更為嚴格。

而 isset 函數是 is_null / === null 的反向操作。

深入學習

實際程式設計中我們傾向于使用 is_null 函數,因為這樣寫程式更容易讀。比如在較為流行的 Laravel 架構内,就是用了大量的 is_null 函數。比如使用者對象判斷為null。

if (! is_null($this->user)) {
    return $this->user;
} 
           

比如對模型判斷為空,則建立新的對象:

protected function newModelQuery($model = null)
{
    return is_null($model)
            ? $this->createModel()->newQuery()
            : $model->newQuery();
}
           

還有一個原因是,is_null 作為函數,可以友善地作為回調函數引用。比如對數組内所有元素做非 null 過濾。

$arrayOfNullValues = array_filter($myArray, 'is_null');
           

寫在最後

本文介紹了PHP判斷是否為 null 的兩種方式,希望大家能夠熟練使用,寫出更優雅健壯的代碼。

Happy coding :_)

我是 @程式員小助手 ,持續分享程式設計知識,歡迎關注。