Php/docs/function.empty

提供:Dev Guides
< Php
移動先:案内検索

empty

(PHP 4, PHP 5, PHP 7)

empty変数が空であるかどうかを検査する


説明

empty ( mixed $var ) : bool

変数が空であるかどうかを検査します。 変数が空であるとみなされるのは、変数が存在しない場合や 変数の値が false に等しい場合です。 empty() は、変数が存在しない場合でも警告を発しません。


パラメータ

var

チェックする変数

注意:

PHP 5.5 より前のバージョンでは、empty() がサポートするのは変数だけです。 それ以外の値をチェックするとパースエラーになります。つまり、 empty(trim($name)) は動作しません。かわりに trim($name) == false を使います。

変数が存在しなくても警告は発生しません。 つまり、empty() は本質的に !isset($var) || $var == false と同じことを簡潔に記述しているだけです。


返り値

var が存在し、かつその値が空や0でなければ、 つまり boolean のコンテキストで false と見なされる場合、false を返します。 詳細は boolean への変換 を参照して下さい。 それ以外の場合は true を返します。


例1 簡単な empty() / isset() の比較

<?php$var = 0;// $var が空なのでtrueと評価されますif (empty($var)) {    echo '$var is either 0, empty, or not set at all';}// $var が設定されているのでtrueと評価されます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() が宣言されていればそれをコールします。

参考

  • isset() - 変数が宣言されていること、そして null とは異なることを検査する
  • __isset()
  • unset() - 指定した変数の割当を解除する
  • array_key_exists() - 指定したキーまたは添字が配列にあるかどうかを調べる
  • count() - 変数に含まれるすべての要素、 あるいはオブジェクトに含まれる何かの数を数える
  • strlen() - 文字列の長さを得る
  • PHP 型の比較表