isset()
関数とempty()
関数
isset()
関数とempty()
関数はどちらも変数の状態を確認するための関数です。似ているように見えますが、動作方法や目的が異なるため、適切に使い分けることが重要です。
isset()
関数は、変数が存在し、かつnull
でないかを確認する関数です。empty()
関数は、変数が空であるかどうかを確認する関数です。
このようなisset()
関数とempty()
関数の概念整理および使用方法と違いについて説明します。
isset()
関数
変数が存在し、かつnull
でないことを確認
この関数は、変数が宣言されており、その値がnull
でない場合にtrue
を返します。
値が空であっても変数が存在すればtrue
を返し、変数が宣言されていないか、またはnull
の場合はfalse
を返します。
$var1 = '';
$var2 = null;
var_dump(isset($var1)); // true
var_dump(isset($var2)); // false
empty()
関数
変数が空であるかを確認
この関数は、変数が宣言されており、その値が空の値である場合にtrue
を返します。
空の値とは、0
、''
、null
、false
、array()
などの値を指します。
ただし、空のオブジェクトはfalse
とはみなされず、オブジェクトが存在する場合はfalse
を返します。
$var1 = '';
$var2 = null;
$obj = new stdClass();
var_dump(empty($var1)); // true
var_dump(empty($var2)); // true
var_dump(empty($obj)); // false(空のオブジェクトはemptyではありません)
違いの比較
isset()
関数とempty()
関数の違いを返り値を基準にまとめた表で比較してみます。
返り値 | isset() |
empty() |
---|---|---|
変数が存在しない場合 | false |
true |
変数に値がある場合 | true |
false |
変数の値がない場合(null ) |
false |
true |
変数の値が空文字列('' )の場合 |
true |
true |
変数の値が0 の場合 |
true |
true |
変数の値が空の配列の場合 | true |
true |
変数の値が空のオブジェクトの場合 | true |
false |
柔軟なエラー処理
isset()
関数とempty()
関数の比較は非常に重要です。
未定義の変数や誤った変数にアクセスした際に発生する警告メッセージを回避する方法です。
例えば、未定義の変数をisset()
で確認すればエラーなく処理できますが、empty()
はその変数が宣言されている必要があります。
したがって、isset()
は変数が存在するかを確認する際に適しており、empty()
は変数が空であるかを確認する際に適しています。