【PHP入門】NULL判定をする方法まとめ!3つの関数の結果を比べる

muramatsu
書いた人 muramatsu
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは。ライターのmuramatsuです。

今回は、変数の値がNULLかどうかを判定する方法の紹介です。

変数にNULLや空白などが設定されていると、処理によっては参照エラーなどの例外が発生することもあります。

原因がなかなか分からず、解決するのに時間がかかってしまった
簡単な原因のエラーに何時間も取られてしまった

という事も考えられます。

そのため、参照エラーによるシステムダウンなどを防ぐために、PHPでは変数の値がNULLや空か調べる関数が用意されています。

この記事では、

  • NULL判定をする方法とは
  • is_null関数で変数がNULLか調べる方法
  • empty関数で変数が空白か調べる方法
  • isset関数で変数がNULL以外か調べる方法

の3つの関数を解説していき、

  • is_null、empty、issetの3つの関数の結果一覧

も最後に併せて紹介していきます。

変数の値がNULLや空白か調べる方法について、わかりやすく解説していきす!

NULL判定をする方法とは

変数の値がNULLか空かを判定する手段として、is_null関数empty関数isset関数を使う方法があります。

それぞれの関数には以下の働きがあります。

is_null関数 —– 変数の値がNULLかそうではないか
empty関数 —– 変数の値が空か
isset関数 —– 変数の値がNULL以外か

is_nullisset関数のようにNULLかNULL以外かを調べるということは、変数の値がNULLになっている時のみにTrueかFalseを返すようになります。

empty関数のように空かを調べると「数値の0」「文字列の’0’」「浮動小数点の0.0」「NULL」「FALSE」「空の配列」「空の変数」なども空であるとみなされます。

それぞれの返り値は以下のようになります。

is_null関数 —– NULLの時にTURE、NULL以外はFALSE
empty関数 —– 0、’0’、0.0、NULL、False、$array()、if($x)、未定義の変数はTRUE、それ以外はFALSE
isset関数 —– NULL以外の時にTURE、NULLの時はFALSE

これらの関数で値を判定するのには、var_dumpを使って出力させる方法とif文if~else文を使う方法があります。

今回はif文を使った方法での解説をしていきます。

if文がよく分からないという方は、以下の記事を参考にしてくださいね。

is_null関数で変数がNULLか調べる

変数の値がNULLかどうかをis_null関数で調べてみましょう。

is_null関数は、引数に対象の変数を指定します。

is_null($変数)

is_null関数は、指定した変数がNULLの場合はTRUEを返します。
変数が未定義の場合もTRUEを返しますが、エラーNotice: Undefined variableも一緒に出ます

if文とis_null関数を使用して、変数の値がNULLかどうか調べるサンプルコードです。

実行結果

is_null関数は変数がNULLかどうか調べる関数ですので、空白や0を指定してもFALSEを返します。

実際に以下のように変数に他の値を入れてvar_dumpで結果を出力してみましょう。

実行結果は以下のようになりました。

変数の値出力結果
NULLbool(true)
0bool(false)
'0'
bool(false)
0.0
bool(false)
空の文字列 ''
bool(false)
空白の文字列 ' '
bool(false)
False
bool(false)
文字列の'NULL'
bool(false)
空の配列
bool(false)
配列
bool(false)
未定義の変数
Notice: Undefined variable: value7 (エラー)
bool(true)

NULLのみTrueが返ってきているのが分かりますね。
また、定義をしていない変数を指定した場合もTrueが返ってきていますが、エラーも出ました

empty関数で変数が空か調べる

次にempty関数を使用して変数が空かどうかを調べてみましょう。

empty関数は、引数に対象の変数を指定します。

empty($変数)

empty関数は、指定した変数が空の場合はTRUEを返します。

if文とempty関数を使用して、変数の値が空白かどうか調べるサンプルコードです。

実行結果

その他「数値の0」「文字列の’0’」「浮動小数点の0.0」「NULL」「FALSE」「空の配列」「空の変数」なども空であるとみなされるのかvar_dumpで出力してみましょう。

実行結果

変数の値出力結果
NULLbool(true)
0bool(true)
'0'
bool(true)
0.0
bool(true)
空の文字列 ''
bool(true)
空白の文字列 ' '
bool(false)
False
bool(true)
文字列の'NULL'
bool(false)
空の配列
bool(true)
配列
bool(false)
未定義の変数
bool(true)

空白の文字列の場合でも、半角または全角スペースが入っているので「空」ではなくなりFalseになります。

スペースでも値が入っている場合は全て Falseになっているのが分かりますね。

empty関数について詳しく知りたい方は、以下の記事を参考にしてください。
isset関数との違いについても記載されています。

isset関数で変数がNULLでないか調べる

isset関数を使用して、値を調べる方法を見ていきしょう。

変数の値がセットされている、またはNULLでないことを確認するには、isset関数を使用します。

isset関数は、引数に複数の対象の変数を指定することができます。

isset( $変数1 [, $変数2… ])

isset関数はNULL以外であれば戻り値にTRUEを返します。

なおPHPのバージョン5.4.0からは文字列のオフセット値を非数値に設定した場合はFALSEを返すようになっています。

if文とisset関数を使用して、変数の値がNULL以外か調べてみましょう。

実行結果

isset関数は、値がセットされているかNULL以外でTRUEを返すので、空白文字や数値の0などを指定してもTRUEを返します。

is_null、empty関数と同じように、それぞれの値の結果をvar_dumpで出力してみましょう。

実行結果

変数の値出力結果
NULLbool(false)
0bool(true)
'0'
bool(true)
0.0
bool(true)
空の文字列 ''
bool(true)
空白の文字列 ' '
bool(true)
False
bool(true)
文字列の'NULL'
bool(true)
空の配列
bool(true)
配列
bool(true)
未定義の変数
bool(false)

empty関数では0や空の場合は値が無いとみなされていましたが、isset関数では値があるとみなされ、NULLか未定義以外にTrueが返ってくるようになっています。

また、もし以下のように変数を複数指定した場合、1つでも変数にNULLが存在するとisset関数はFALSEを返します

実行結果

$value3の値がNULLになっているのでFalseが返ってきたのが分かりますね。

isset関数の使い方については以下の記事でも詳しく解説していますので、ぜひ参考にしてください。

3つの関数の結果一覧

3つの関数の実行結果ががどうなるのか、それぞれの値の場合で比べてみました。
頭がごちゃごちゃになってよく分からなくなってしまった時などに、ぜひ利用してくださいね。

変数の値is_nullemptyisset
NULLTRUETRUEFALSE
0FALSETRUETRUE
'0'
FALSETRUETRUE
0.0
FALSETRUETRUE
空の文字列 ''
FALSETRUETRUE
空白の文字列 ' '
FALSEFALSETRUE
False
FALSETRUETRUE
文字列の'NULL'
FALSEFALSETRUE
空の配列
FALSETRUETRUE
配列
FALSEFALSETRUE
未定義の変数
TRUE
Undefined variable
(エラー)
TRUEFALSE

まとめ

ここでは、変数の値がNULLや空かどうか調べるために使用する3つの関数について説明しました。

この記事で紹介したis_null、empty、isset関数は、いずれも変数の値が正常に設定されているか調べたいときに便利ですので、ぜひ覚えておきましょう。

もし変数がNULLや空白かを調べる方法を忘れてしまったら、この記事を思い出してくださいね!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーランスをされている市川友哉さん。33歳で、プログラミングを学び始め、4ヶ月という短い期間でフリーランスエンジニアとして独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

muramatsu

muramatsu

世界中の人たちと友達になって、その友達の家を巡る旅をしたいと密かに思っている。

複雑な内容を誰にでもわかりやすく、そして納得のいくような解説をする、をモットーにしています!