🐘

PHPにおける isset と !empty の違い

2024/06/28に公開

isset!empty はどちらも変数の値をチェックする関数ですが、それぞれ異なる動作をします。

isset

  • 変数が宣言されていて、かつ NULL ではない場合に true を返します。
  • 変数の値が空文字 ("") や数値の 0 であっても true を返します。
  • 未定義の変数に対して使用すると Fatal error を発生します。

!empty

  • 以下のいずれかに該当する場合に true を返します。
    • 変数が NULL である。
    • 変数が空文字 ("") である。
    • 変数が数値の 0 である。
    • 変数が false である。
    • 変数が 未定義 である。
  • 変数に値が設定されている場合は、たとえそれが空文字や数値の 0 であっても false を返します。

$var1 = "";
$var2 = 0;
$var3 = null;
$var4 = false;

var_dump(isset($var1)); // true
var_dump(isset($var2)); // true
var_dump(isset($var3)); // false
var_dump(isset($var4)); // true

var_dump(!empty($var1)); // false
var_dump(!empty($var2)); // false
var_dump(!empty($var3)); // false
var_dump(!empty($var4)); // false

上記のように、isset!empty はそれぞれ異なる判定を行うため、状況に応じて使い分けることが重要です。

まとめ

  • isset は変数が宣言されていて、かつ NULL ではないことを確認するのに適しています。
  • !empty は変数が空かどうか、または 未定義 であるかどうかを確認するのに適しています。

その他

  • is_null 関数も変数が NULL であるかどうかを確認するのに使用できます。
  • 変数の型を厳密にチェックしたい場合は、gettype() 関数を使用することができます。

Discussion