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

muramatsu
書いた人 muramatsu

こんにちは。ライターの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や空白かを調べる方法を忘れてしまったら、この記事を思い出してくださいね!

おすすめのコンテンツ

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

「何の言語から勉強すればいいかわからない・・・」そんなあなたに質問に答えていくだけで、何の言語を学べば良いのか診断いたします!未経験から6ヶ月でプログラミング習得に向けた学習プランが1分で分かる!

未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:3/30(日)
  • 時間:14:00〜17:00終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

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

最新情報をお届けします

書いた人

muramatsu

muramatsu

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

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