變量為空
以下的東西被認為是空的:
- “” (空字元串)
- 0 (作為整數的0)
- 0.0 (作為浮點數的0)
- “0” (作為字元串的0)
- NULL
- FALSE
- array() (一個空數組)
- $var; (一個聲明了,但是沒有值的變量)
判斷語句中空值傳回false,以下代碼不會産生任何輸出,因為if 語句中的判斷都為false:
$emptyList = ["", , , "0", NULL, FALSE, array(), $var, ];
foreach($emptyList as $val) {
if ($val) {
var_dump($val);
}
}
比較運算符: ==
與 ===
==
===
-
隻涉及到值的比較==
var_dump( == '0.0'); // true
var_dump( == ''); // true
var_dump( == false); // true
-
同時涉及 值 與類型的比較, 更為嚴格===
var_dump( === '0.0'); // false
var_dump( === ''); // false
var_dump( === false); // false
- null 與 空值 通過
比較, 除了 “0” ,都傳回true:==
<?php
$emptyList = ["", , , "0", NULL, FALSE, array(), $var, ];
foreach($emptyList as $val) {
var_dump($val == null);
}
empty, isset, isnull
- empty:檢查一個變量是否為空
<?php
$emptyList = ["", , , "0", NULL, FALSE, array(), $var, ];
foreach ($emptyList as $e) {
var_dump(empty($e));
}
/*
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
*/
- isset:判斷變量var 存在并且值不是 NULL 則傳回 TRUE,否則傳回 FALSE。
$var = ;
var_dump(isset($var)); // true
unset($var);
var_dump(isset($var)); // false
$var = null;
var_dump(isset($var)); // false
- isnull: 判斷變量是否 為 null , 等價于
。=== null
注意
空值之間的
==
比較不一定傳回 true :
// 不具傳遞性
var_dump( == '0'); // true
var_dump('' == ); // true
var_dump('0' == ''); // false
var_dump( == []); // false
最佳實踐
- 空值判斷使用 empty 判斷;
- isset 無法判斷存在但值為null的變量;
- php
和==
差别在于後者同時進行類型相等判斷===