【PHP】isset(), is_null(), empty()の挙動まとめ

こんにちは、技術部の K です。今回は変数の状態を確認するための関数、「isset()」,「is_null()」,「empty()」に関して理解が曖昧だったのでまとめます。

isset()

説明

変数が存在し、かつ値がセットされているかどうかを確認する。
未定義の変数を評価するとエラーを発生させないため、未定義の変数を評価する場合に安全である。

挙動

  • 変数が未定義の場合は 「false」 を返す。
  • 変数の値が 「null」 の場合は 「false」 を返す。
  • 変数の値が 「false」 の場合は 「false」 を返す。
  • 配列の要素の存在を確認する際にも有効。指定の要素が存在していたら 「true」 を返す。
  • 複数のパラメータが渡された場合は、全てのパラメータがセットされている場合に 「true」 を返す。

is_null()

説明

指定した変数が 「null」 かどうかを調べる。
未定義の変数や配列要素にアクセスすると Warning が発生するため注意が必要。

挙動

  • 指定した変数の値が 「null」 だった場合に 「true」 を返す。
  • 未定義の変数に対して使用すると 「true」 を返すが Warning が発生する。
  • 配列の未定義要素に対して使用すると 「true」 を返すが Warning が発生する。

empty()

説明

変数が存在しないか、値が空である場合に 「true」 を返します。
配列が空かを判定するのに有効。
「true」 の条件が複雑で扱いづらいため、なるべく使用しない方が良い。

挙動

以下、empty() で 「true」 が返るケース

  • 変数が存在しない場合
  • 変数が 「null」 の場合
  • 変数が空の文字列 「""」 の場合
  • 変数が数値 「0」 の場合
  • 文字列「”0”」の場合
  • 変数が 「false」 の場合
  • 変数が空の配列 「[]」 の場合

比較表

対象の値  isset()  is_null()  empty()
未定義の変数 false  true(warning) true
null false true true
空文字 ("") true false true
スペース (" ") true false false
数値 0 true false true
文字列の 0 ("0") true false true
false true false true
true true false false
空の配列 ([]) true false true
配列 (要素数 1) true false false
配列の未定義要素 false  true(warning) true

参考

https://www.php.net/manual/ja/ref.var.php

スーパーソフトウエアの採用情報

あなたが活躍できるフィールドと充実した育成環境があります

blank
blank