empty

(PHP 4, PHP 5, PHP 7, PHP 8)

empty檢查一個(gè)變量是否為空

說(shuō)明

empty(mixed $var): bool

判斷一個(gè)變量是否被認(rèn)為是空的。當(dāng)一個(gè)變量并不存在,或者它的值等同于false,那么它會(huì)被認(rèn)為不存在。如果變量不存在的話,empty()并不會(huì)產(chǎn)生警告。

參數(shù)

var

待檢查的變量

注意:

在 PHP 5.5 之前,empty() 僅支持變量;任何其他東西將會(huì)導(dǎo)致一個(gè)解析錯(cuò)誤。換言之,下列代碼不會(huì)生效: empty(trim($name))。 作為替代,應(yīng)該使用trim($name) == false.

沒(méi)有警告會(huì)產(chǎn)生,哪怕變量并不存在。 這意味著 empty() 本質(zhì)上與 !isset($var) || $var == false 等價(jià)。

返回值

當(dāng)var存在,并且是一個(gè)非空非零的值時(shí)返回 false 否則返回 true.

以下的東西被認(rèn)為是空的:

  • "" (空字符串)
  • 0 (作為整數(shù)的0)
  • 0.0 (作為浮點(diǎn)數(shù)的0)
  • "0" (作為字符串的0)
  • null
  • false
  • array() (一個(gè)空數(shù)組)
  • $var; (一個(gè)聲明了,但是沒(méi)有值的變量)

更新日志

版本 說(shuō)明
5.5.0

empty() 現(xiàn)在支持表達(dá)式了,而不僅僅是變量。

5.4.0

檢查非數(shù)字的字符串偏移量會(huì)返回 true.

范例

示例 #1 一個(gè)簡(jiǎn)單的 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 修改了當(dāng)傳入的是字符串偏移量時(shí), 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)

注釋

注意: 因?yàn)槭且粋€(gè)語(yǔ)言構(gòu)造器而不是一個(gè)函數(shù),不能被 可變函數(shù) 調(diào)用。

注意:

當(dāng)對(duì)一個(gè)不可見(jiàn)的對(duì)象屬性使用 empty() 時(shí), __isset() 方法如果存在的話,它將會(huì)被調(diào)用。

參見(jiàn)