Blogブログ

PHP empty、isset、is_null関数。何が違うねん。

こんにちは。HLCのサポート担当、大谷です。

私の担当ではPHPの初心者向け内容を取扱っているのですが、本日のテーマは
前回のempty関数って何?に引き続き、

empty、isset、is_null関数。何が違うねん。

という事でお届けいたします。

コードを見ていていずれも良く見かける関数ですが、何だか似たような事をやってくれてそうなこの関数達。
「実際の動きはどうなってるのか、どうやって使い分けてるの?」となりがちです。
前回empty関数について詳しくやりましたが(使わねーと言ってしまいましたが)、そもそも使うとしたらどう使うっていうところを、それぞれについて一度確認してみます。

公式(php.net)での説明

公式での説明はそれぞれ以下の通りです。

is_null関数

変数が null かどうか調べる
変数 が null の場合に true、 それ以外の場合に false を返します。

isset関数

変数が宣言されていること、そして null とは異なることを検査する
変数 が存在して null 以外の値をとれば true、 そうでなければ false を返します。

empty関数

変数が空であるかどうかを検査する
変数 が存在しない、 または空や0の値が設定されている場合、 つまり boolean のコンテキストで false と見なされる場合、 true を返します。

一覧で見てみると以下のようになります

is_null関数は「変数が未定義」、もしくは「定義したのみ」、値が「null」これらの場合はtrueを返します。
ただ、公式のざっくりとした、「変数 が null の場合に true、 それ以外の場合に false を返します。」という説明だとちょっと言葉足りなさすぎじゃないですかね・・・。

isset関数は、is_null関数と全く逆の結果を返します。
この2つは片方覚えておけば、もう一方はその逆と、セットで覚えられそうです。
但し、配列の場合は値が入っていなくてもtrueを返すのは要注意です。

empty関数は、一般的に空と呼べる値(“”,null)であるか、0もしくはfalseの場合は結果がtrueになる。
つまりis_null関数にプラス、””,null,0,falseの場合も結果がtrueになります。

まとめ(無理やり)

is_null関数は、「変数が未定義」、「定義したのみ」、「null」の場合はtrueを返す。
isset関数は、「変数が未定義」、「定義したのみ」、「null」以外の場合はtrueを返す。
empty関数は、is_null関数にプラス、「””」、「null」、「0」、「false」の場合もtrueを返す。

て言う事でいかがでしょうか(汗)
emptyに関しては使うか使わないかは好みが分かれそうですね。

大谷

執筆者

Developer

大谷