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

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

今回は、変数の値がNULLかどうかを判定する方法の紹介です。変数にNULLや空白などが設定されていると、処理によっては参照エラーなどの例外が発生することもあります。

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

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

この記事では、

  • NULL判定をする方法とは
  • is_null関数で変数がNULLか調べる方法
  • empty関数で変数が空白か調べる方法
  • isset関数で変数がNULL以外か調べる方法
  • is_null、empty、issetの3つの関数の結果一覧

を紹介していきます。

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

NULL判定をする方法とは

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

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

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

is_null、isset関数のように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や空白かを調べる方法を忘れてしまったら、この記事を思い出してくださいね!

現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

LINEで送る
Pocket

書いた人

muramatsu

muramatsu

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

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説