在先前的文章《PHP數組學習之怎麼去除空白或重複的元素》中,我們了解到可以利用empty()函數來判斷一個值是否為空。那麼PHP有哪些檢查空值的方法呢?這次我們就來了解幾種常用方法,有需要的可以了解一下~
今天本文的主題是:使用PHP檢測一個值是不是為空、是不是空值。好了,直接開始正題,以下跟大家介紹幾種常用方法。
方法1:使用empty()
empty功能:偵測變數是否為"空"
任何一個未初始化的變數、值為0 或false 或空字串"" 或null的變數、空數組、沒有任何屬性的對象,都會判斷為TRUE。
下面透過程式碼範例來具體看看:
<?php $a = 'test'; $b = array('key1' => 'value1'); $class = new stdClass(); var_dump(empty($c)); // 输出 bool(true) var_dump(empty($b['key2'])); // 输出 bool(true) var_dump(empty($class)); // 输出 bool(false) var_dump(empty($class->test->test)); // 输出 bool(true) class EmptyClass{}; $empty_class = new EmptyClass(); var_dump(empty($empty_class));// 输出 bool(false) ?>
輸出結果:
以下的變數會被empty認為是空的:
"" (空字串)
#0 (作為整數的0)
#0.0 (作為浮點數的0)
"0" (作為字串的0)
NULL
FALSE
array() (一個空數組)
$var; (一個宣告了,但是沒有值的變數)
了解
0
、'0'
、''
、null
、false
這五種類型的差異。
null為不存在之意:php底層的zval空間沒有存其value值,只儲存了一個type標誌其 IS_NULL。
而0 、'0' 、'' 、 false這四個為存在,php底層是開闢zval空間存儲,有value,有type。
string '0'與string '' 不相等
int 0 卻和string '' 空相等,(非同類形比較, php會做型別轉換)
string '0' 與 null 不相等,int 0 與 null 相等
##方法2:使用isset()
isset功能:判斷變數是否被初始化,可用來測試變數是否已經配置。若變數已存在則傳回 true 值;其它情形傳回 false 值。
下面透過程式碼範例來具體看看:
<?php $a = 'test'; $b = array('key1' => 'value1'); $class = new stdClass(); var_dump(isset($class->test->test)); // 判断对象属性是否定义:输出 bool(false) var_dump(isset($a)); // 判断变量是否定义:输出 bool(true) var_dump(isset($c)); // 判断变量是否定义:输出 bool(false) var_dump(isset($b['key1'])); // 判断数组元素是否定义:输出 bool(true) var_dump(isset($b['key2'])); // 判断数组元素是否定义:输出 bool(false) ?>
輸出結果:
方法3:使用is_null()
當變數被賦值為"null"時,偵測結果為true;0、空字串、false、空數組都偵測為false。 下面透過程式碼範例來具體看看:
<?php $a = null; $b = false; var_dump(is_null($a)); var_dump(is_null($b)); var_dump(is_null($c)); ?>
方法4:利用==或===運算子
來判斷變數是否為"空"。當變數被賦值為"null"時,偵測結果為true;而0、空字串、false、空數組都偵測為false。如果變數未初始化時,程式將會報錯。
<?php $a = 0; $b = array(); var_dump($a == null); var_dump($b == null); var_dump($c == null); ?>
<?php $a = 0; $b = false; $c = 0.0; $d = null; $e = ''; var_dump(0 === $a); // 输出 bool(true) var_dump(0 === $b); // 输出 bool(false) var_dump(0 === $c); // 输出 bool(false) var_dump(0 === $d); // 输出 bool(false) var_dump(0 === $e); // 输出 bool(false) var_dump('' === $e); // 输出 bool(true) var_dump('' === $a); // 输出 bool(false) var_dump('' === $b); // 输出 bool(false) var_dump(0.0 === $c);// 输出 bool(true) var_dump(0.0 === $a); // 输出 bool(false) ?>
以上是利用PHP如何檢查空值(4種方法)的詳細內容。更多資訊請關注PHP中文網其他相關文章!