empty
(PHP 4, PHP 5, PHP 7, PHP 8)
empty — 檢查一個變數是否為空
說明
判斷一個變數是否被認為是空的。當一個變數並不存在,或者它的值等同於false
,那麼它會被認為不存在。如果變數不存在的話,empty()並不會產生警告。
參數
-
var
-
待檢查的變數
注意:
在 PHP 5.5 之前,empty() 僅支援變數;任何其他東西將會導致一個解析錯誤。換言之,下列程式碼不會生效: empty(trim($name))。 作為替代,應該使用trim($name) == false.
沒有警告會產生,哪怕變數並不存在。 這意味著 empty() 本質上與 !isset($var) || $var == false 等價。
返回值
當var
存在,並且是一個非空非零的值時返回 false
否則返回 true
.
以下的東西被認為是空的:
""
(空字串)0
(作為整數的0)0.0
(作為浮點數的0)"0"
(作為字串的0)null
false
array()
(一個空陣列)$var;
(一個聲明了,但是沒有值的變數)
更新日誌
版本 | 說明 |
---|---|
5.5.0 |
empty() 現在支援表達式了,而不僅僅是變數。 |
5.4.0 |
檢查非數字的字串偏移量會返回 |
範例
示例 #1 一個簡單的 empty() 與 isset() 的比較。
<?php
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
?>
示例 #2 在字串偏移量上使用empty()
PHP 5.4 修改了當傳入的是字串偏移量時, empty() 的行為
<?php
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>
以上例程在 PHP 5.3 中的輸出:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)
以上例程在 PHP 5.4 中的輸出:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
參見
- isset() - 檢測變數是否已聲明並且其值不為 null
- __isset()
- unset() - 釋放給定的變數
- array_key_exists() - 檢查陣列里是否有指定的鍵名或索引
- count() - 統計陣列、Countable 對像中所有元素的數量
- strlen() - 獲取字串長度
- The type comparison tables