檢查一個變數是否為空

empty

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

empty檢查一個變數是否為空

說明

empty(mixed $var): bool

判斷一個變數是否被認為是空的。當一個變數並不存在,或者它的值等同於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

檢查非數字的字串偏移量會返回 true.

範例

示例 #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)

註釋

注意: 因為是一個語言構造器而不是一個函式,不能被 可變函式 或者 命名參數 呼叫。

注意:

當對一個不可見的對象屬性使用 empty() 時, __isset() 方法如果存在的話,它將會被呼叫。

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *