PHPの is_set と is_nullの違いって何?使い分け方を紹介

PHPを使っていくと疑問に思うのが is_null関数 isset関数 の違いって何だろう?ってことです。

この2つは何か似てるしどうやって使い分ければいいのか分かりずらいですよね(特にPHP初心者)

という訳でこの2つの違いと使い分け方を説明してみたいと思います。

is_null は変数が NULL かどうかを判別するのに使う

まず最初はis_null関数で、これは変数に NULL という値が入っているか確かめるためのものです。

NULLって言葉はPHP以外でも聞くと思いますが、null型に属している唯一の値ということになっています。

まあ値を持たないことを示す値ってことですよね。(←ややこしい・・・w)

 

使い方は簡単で次のように変数を渡すだけ

変数にNULLが入っていれば  TRUE  、なければ  FALSE  を返すという単純なものです。

is_nullの使用例

is_nullは変数が存在しているという状態でその値がNULLかどうかを判断するのに使います。

なので使用例として考えられるのは次のようなコード

このコードだと配列内にNULLがないかどうかを調べてますね。

こういう風にあらかじめ変数にNULLが含まれると予想できる場合に使われます。

 

ただし注意点として次のように未定義の変数に対して使うのはNG

これを実行すると次のようなエラーメッセージが出てしまいます。

PHPでは未定義定数にはNULLは代入されてないので、当然変数を参照できなくてエラーになるという訳です。

isset は変数が未定義かどうか判別するのに使う

お次はisset関数で、これは変数が未定義をチェックするためのものになっています。

未定義というのはコード中のどこを探しても変数が見つからないということです。

 

この関数も使い方は簡単で次のように変数を渡すだけ

変数が定義済みなら TRUE 、変数が未定義なら FALSE の値が返ってきます。

issetの使用例

issetの使用例として考えられるのは次のようなコード

このコードでは連想配列でキーも値も定義されてないかもしれない変数にアクセスできるか確かめています。

 

このコードの実行結果は次の通り

連想配列内に 'cherry' なんてキーは無いのでこのように表示されるという訳です。

issetはこのように存在するかどうか不確かな変数をチェックするのに役立ちます。

ここまでのまとめ

まずisset関数とis_null関数の違いをまとめると次の通り

  • is_null関数
    変数にNULLという値が入っているかどうか確かめる
  • isset関数
    変数がコード中で定義されているかどうか確かめる

NULLという値をチェックすることと変数が定義されているかを調べるのは全く別物です。

 

なので次のような感じで使い分けるのがベスト

  • 変数が存在すると分かっている場合
    is_null関数を使う
    例 : 配列内にNULLの値が含まれていないかを調べるなど
  • 変数が存在するか不確かな場合
    isset関数を使う
    例 : 連想配列内で任意のキーの値があるか調べるなど

どちらも似ているからと言って適当に使い分けないようにしたいですね。

 

ということでis_null関数とisset関数の違いと使い分け方については以上です。

ではでは(・ω・)ノ゛

PHP

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

2件のコメント
  • 名無し

    >変数が未定義なら TRUE 、変数が定義済みなら FALSE の値が返ってきます。
    初心者なので間違っていたら恐縮なのですが、これは逆ではないでしょうか?

    3月 30, 2021 11:28 am
    • ぴー助

      まさしくその通りで、逆になっていました。変数が定義済みなら TRUE 、未定義なら FALSE が返ってくるのが正しいですね。記事を訂正しておこうと思います。ご指摘ありがとうございました!

      4月 1, 2021 7:25 am

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください