【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 |
参考
関連記事
- 2023-09-19
- テクノロジー