PHPで未定義変数やnullかどうかを調べる関数まとめ

未定義変数やnullチェックは安全なプログラムを作るのに欠かせないことです。

PHPにも変数が未定義、あるいは値が null かどうか調べる関数がいくつかあります。

という訳でそれらの関数の使い方について自分の記憶の整理も兼ねて少し解説

未定義 と null の違いは何?

関数を紹介する前に未定義null の違いというものをハッキリさせておきます。

両者の違いというのは次に説明するようなこと

 

まず未定義というのは変数そのものが未宣言あるいは値が代入されていない状態を指します。

例えば次のコードのように変数が未宣言だったり、連想配列の存在しないキーにアクセスしたときなどに未定義変数になります。

変数自体が宣言されていても値が代入されてないなら未定義になる点に注意

 

そして次にnull変数ですが、これは  null  という"値がないことを示す値"を持つ変数のことです。

例えば次のように  null  または  NULL  を代入することでnull変数になります。

null  と  NULL  は全く同じものです。

 

つまりここまでをまとめると未定義とnullの違いは次のようなこと

  • 変数が未定義
    変数自体が宣言されていない、あるいは値が代入されてない
  • 変数がnull
    変数に  null  または  NULL  という値がないことを表す値が代入されている

大雑把にいうとこのような違いですね。

未定義とnullを判定する関数まとめ

では変数が未定義あるいは null かどうかを調べるにはどうすればいいか・・・

ということなんですがPHPでは次の2つの関数が用意されています。

  • isset関数
  • is_null関数

この2つの使い方についてコード例を交えながら説明します。

isset関数

これは変数が未定義または null かどうかを調べるための関数

PHPマニュアルによるとこの関数は次のような説明がされていました。

bool isset ( mixed$var [, mixed$... ] )

変数がセットされており、それが NULL でないことを調べます。

引用 : PHP : isset - Manual

ただ単に未定義の場合だけでなく、  null  の時も  true  が返される点に注意です。

 

この関数の使い方は簡単で調べたい変数を渡すだけ

isset関数には上のコード例のように複数変数も渡せますが、1つだけ渡す使い方が一般的です。

 

この関数の具体的な使われ方ですが、未定義かどうかで処理を分けるのに使われます。

例えば次は連想配列のキーが存在しているかissetで調べているコード例

連想配列などで予期せぬ値にアクセスしてしまうのを防ぐのに役立ちます。

 

またこれだけでなく三項間演算子と組み合わせれば代入時の未定義チェックに使うことも可能

この書き方はPHPだとよく見かけるチェック方法です。

is_null関数

これは文字通り変数がnull値かどうかを調べるための関数

PHPマニュアルでも次のように説明されていました。

bool is_null ( mixed$var )

指定した変数が NULL かどうかを調べます。

引用 : PHP : is_null - Manual

こちらはisset関数と違って受け取れる引数は1つだけのようです。

 

それでこの関数の使い方も簡単でただnullチェックしたい変数を渡すだけ

変数が  null  の時には  true   、そうでないときは  false  が返ってきます。

 

ちなみにis_null関数は変数が純粋な  null  の場合にしか  true  を返しません。

なので == で比較したときに  ''  、  false  などは同じと見なされますが、is_null関数では全て  false  になります。

本当にnull値が代入されている時だけ真になる点に注意が必要です。

ここまでのまとめ

最後にここまでのことを簡単にまとめてみます。

 

まず未定義とnullの違いは次のようなこと

  • 変数が未定義
    変数自体が宣言されていない、あるいは値が代入されてない
  • 変数がnull
    変数に null または NULL という値がないことを表す値が代入されている

 

そして変数が未定義またはnullか判定するのに使えるのが次の2つの関数

  • isset関数
    変数が未定義もしくはnull値の場合に  true  が返ってくる
  • is_null関数
    変数が  null  または  NULL  の場合に  true  が返ってくる

変数が使用可能かどうかを調べるにはこれらの関数を使いましょう。

 

ということでPHPで変数の未定義やnullかどうかを調べる方法でした。

ではでは($・・)/~~~

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

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

1件のコメント
  • 8765

    issetは、変数がある場合かつNULLではない場合に真(TRUE)です。
    未定義の場合、NULLの場合は偽(FLASE)です。

    6月 7, 2022 3:16 pm

コメントを残す

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

CAPTCHA


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