[PHP] 変数に値が何か入っているかを調べる関数の使い方の違いについて
変数に値が入っているかを調べるのに使う関数、isset・empty・is_null の使い方の違いが曖昧なままでいたのですが、たびたび混乱するのでここで自分なりに整理してみました。
isset、empty、is_nullについて
isset
変数がセットされているかどうかを調べる。変数に何も入っていなければ(NULLの状態) FALSE を返す。NULL 以外ならば TRUE を返す。
empty
変数が空だったらTRUE それ以外は FALSE を返す。
空以外にも、0(整数/文字列)、NULL、FALSE、空の配列を TRUE で返す。
is_null
変数がNULLかどうか調べる。変数がNULLならTRUE、それ以外はFALSEを返す。
is_null と ! isset の違い
変数読み出しの点で動作が異なるが、NULL値かどうかを返す結果は同じ。以下の参考サイトがとてもわかりやすかったです。
比較表
実行結果の比較表が以下です。どういう場合にTRUEが返るかが表を作ってみてよく分かりました。元ページと表のコードをこちら「isset empty is_null の比較テスト」から見ることができます。
この3つの関数の違いは他の方もよく書かれているので、みなさん混乱するところなんだなと思いました。マニュアルや他のテキストをよんでもなかなか理解できず、結局、自分で実行した結果を見て比較することで理解できた気がします…。
No Comments & Tracbacks