您將在幾乎每個使用 PHP 編寫的程式中使用變數。大多數時候這些變數都有一個值,我們通常用一個初始值來建立它們。但是,您使用的某些變數始終有可能未初始化。這可能會導致 PHP 發出有關使用未定義變數的警告。
未定義變數的原因可能有很多。最常見的問題是您實際上沒有定義該變量,或者在其他地方重用它時犯了拼寫錯誤。這只是一個程式錯誤。然而,另一種可能導致未定義變數的可能性是它是有條件定義的。
您也可能會發現變數的值為 NULL
。發生這種情況的原因有很多。例如,變數可能只是尚未用值初始化。或者函數可能會傳回空值來表示某種錯誤。
無論如何,在定義變數之前或當變數具有空值時使用變數可能會產生意想不到的後果。在本教程中,我將向您展示如何檢查元素是否已定義並查看它是否為空或 null。
您可以使用 isset()
、empty()
或 is_null()
來檢查其中一個或所有條件是否為真或假。
讓我們開始一些定義。
isset()
:您可以使用 isset()
來確定變數是否已宣告並且與 null
不同。 empty()
:用來判斷變數是否存在且變數的值不等於 false
。 is_null()
:函數用來檢查變數是否為 null
。 isset()
與 empty()
正如我們從定義中看到的,如果我們之前定義了該變數並將其值設為NULL
以外的值,則isset()
將傳回true
。這可以包括 0
、空字串或 false
。另一方面,每當變數值設定為計算結果為 false
時,empty()
將傳回 true
— 我們稱這些為「假」值。 falsey 值的範例包括0
、空字串""
和字串"0"
、空數組、NULL
,或者當然是布林值false
。
isset()
和 empty()
之間的一個相似之處是它們都是語言結構,因此不能使用變數函數來呼叫。
下面的程式碼片段應該要解釋這兩者之間的差異。
<?php $fruit = ''; if(isset($fruit)) { echo 'Do you like '.$fruit.'?'; } // Output: Do you like ? if(!empty($fruit)) { echo 'Do you like '.$fruit.'?'; } // No Output ?>
請注意,empty()
可以使用 isset()
函數來寫:
<?php function my_empty($x) { return !isset($x) || $x == false } ?>
當然,通常使用內建的 empty()
函數會更容易。
isset()
與 is_null()
如果變數的值已明確設定為 NULL
,則 is_null()
函數將傳回 true
。否則,它只是返回 false
。另一方面,只要定義了變數且其值不為 NULL
,isset()
就會傳回 true
。
這是一個基本範例來顯示它們之間的差異。
<?php $fruit = NULL; if(isset($fruit)) { echo 'Do you like '.$fruit.'?'; } // No Output if(is_null($fruit)) { echo 'There is no fruit.'; } // Output: There is no fruit. ?>
empty()
與 is_null()
如果變數的值計算結果為 false
,則 empty()
函數將傳回 true
。這可能意味著空字串、NULL
、整數 0
或沒有元素的陣列。另一方面,只有當變數的值為 NULL
時,is_null()
才會傳回 true
。
這是一個基本範例來顯示它們之間的差異。
<?php $person = ['first_name' => 'Monty', 'last_name' => '', 'age' => '83', 'fav_movie' => NULL]; if(empty($person['last_name'])) { if(is_null($person['last_name'])) { echo 'The last name is set to NULL.'; } else { echo 'The last name is probably an empty string.'; } } // Output: The last name is probably an empty string. if(is_null($person['fav_movie'])) { echo $person['first_name'].' did not specify a favorite movie.'; } // Output: Monty did not specify a favorite movie.
您可以使用兩個技巧來編寫更簡潔的程式碼並避免將來出現錯誤。
1.與empty()
和is_null()
不同,您可以一次向isset()
傳遞多個值,以同時檢查其中是否有任何未定義或設定為NULL
。在這種情況下,如果傳遞的值都不是 NULL
,則 isset()
將只傳回 true
。
2.不要使用 ==
來檢查值是否為 NULL
。這將為錯誤值(例如計算為 false
的空字串)提供誤報。
本教學快速解釋了 isset()
、empty()
和 is_null()
之間的差異。希望您現在能夠確定其中哪一個最適合您在程式碼中使用。
以上是比較PHP的isset()、empty()和is_null()函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!