empty
は、PHPで変数が空かどうかを判定するための便利な関数です。
この関数は主に条件分岐やバリデーション処理で利用されます。この記事では、empty
関数の正確な挙動と使い方について解説します。
目次
empty関数の挙動
empty
関数は以下の場合に true
を返却する挙動をします。
- 変数が未定義
- null
- 空文字
""
- 数値の0
- 文字列の0
- 論理値
false
の場合 - 空の配列
コードに直すと以下になります。
empty($undefined); // true
empty(null); // true
empty(""); // true
empty(0); // true
empty("0"); // true
empty(false); // true
empty(array()); // true
特筆すべき所としては変数が未定義である場合と、0の場合にはempty
がtrue
を返却します。
公式のドキュメントには以下の記述があるのがわかりやすいかと思います。
変数が存在しなくても警告は発生しません。 つまり、empty() は本質的に !isset($var) || $var == false と同じことを簡潔に記述しているだけです。
https://www.php.net/manual/ja/function.empty.php
厳密にチェックをしたい場合
empty
の挙動について解説してきました。
便利な反面、割と曖昧な部分が多いためチェック漏れが発生してしまう場合が存在します。
厳密にチェックする場合では empty
である事を確認するのではなく、「0である」などの期待する値を厳密にして確認する必要があります。
$value = 0;
$value === 0; // 厳密な比較演算子 === を使用
gettype($value) === 'integer'; // 型を比較
isset($value) && $value === null; // 変数が宣言済みで null を期待する
empty
の挙動では厳密な比較演算子が使われていないため、比較演算子を自分で記述する事で厳密なチェックが可能になります。
終わりに
empty
関数は、PHPプログラミングにおいて変数の空判定を簡潔に行うための便利な関数です。
ですが曖昧な部分が存在しているため、厳密な比較が必要な場合には厳密な比較演算子 ===
を使用することが推奨されます。
変数の状態に応じて適切な条件分岐を行い、アプリケーションロジックをスムーズに制御していきましょう。
コメントを残す