【PHP】empty関数を使って変数が空かどうかを判定する!

PHPで変数が空かどうかを判定するにはempty()関数を使用します。

PHPのempty()関数は、変数が空であるかどうかを判定する関数であり、空の場合はtrueをそれ以外の場合はfalseを返すことから変数の空チェックを行う際によく使われます。

しかし、空チェックを行うからといって空以外はfalseを返すと思ったら間違いないので注意してください。
変数に値が入っていたとしても空して判断するパターンがあります。

例えば、「”0″」のような文字列型として0や「0」のような整数型としての0はempty()関数は空とみなしてtrueを返します。

また、空チェックを行う関数はempty()関数意外にisset()関数やis_null()関数があり、これらの関数も変数の値によって戻り値が異なりますので確認しておきましょう。

今回はPHPのempty関数を使って、変数が空かどうかを判定する方法について以下の内容で解説していきます。

⚫︎ 数値の変数をチェックする場合
⚫︎ 文字列の変数をチェックする場合
⚫︎ 真偽値の変数をチェックする場合
⚫︎ 配列の変数をチェックする場合
⚫︎ nullの変数をチェックする場合
⚫︎ 定義していない変数をチェックする場合

⚫︎ isset()とは
⚫︎ is_NULL()とは
⚫︎ isset()、empty()、is_null()で比較した結果

empty()とは

empty()は、変数が空かどうかをチェックする関数になります。
また、空かどうかだけでなく変数が設定/宣言されているかどうかも確認します。

empty()の書き方

empty()の書き方は下記のようになります

パラメータ

⚫︎ $空チェックしたい変数(必須):
チェックしたい変数を指定します

empty()のパラメータに$空チェックしたい変数を指定することで指定した変数が空かどうか判断することができます。

戻り値

変数が存在し、空でない場合はfalseを返し、それ以外の場合はtrueを返します。

また、次の値は空と判断されます。

⚫︎ “0” (文字列として0)
⚫︎ 0(0は整数)
⚫︎ “” (空の文字列)
⚫︎ null
⚫︎ 偽
⚫︎ array() (空の配列)
⚫︎ $var1 (宣言されているが値がない変数)

変数が空かどうかを判定するサンプルコード

empty()で変数が空かどうかを判定するサンプルコードを紹介します。

数値の変数をチェックする場合

出力結果

$var1の中は空です。
$var2の中は空ではありません。

変数が0の整数である場合、empty()はtrueを返し、変数が1以上の整数である場合、empty()はfalseを返します。

文字列の変数をチェックする場合

文字列の変数をチェックする場合を見てみます。

出力結果

$var1の中は空です。
$var2の中は空ではありません。
$var3の中は空です。

変数が空の文字列である場合、empty()はtrueを返し、変数が文字列である場合、empty()はfalseを返し、変数が0の文字列である場合、empty()はfalseを返します。

真偽値の変数をチェックする場合

真偽値の変数をチェックする場合を見てみます。

出力結果

$var1の中は空ではありません。
$var2の中は空です。

真偽値がtrueの場合、empty()はfalseを返しますが真偽値がfalseの場合、empty()はtrueを返しますalseを返します。

配列の変数をチェックする場合

配列の変数をチェックする場合を見てみます。

出力結果

$var1の中は空です。
$var2の中は空ではありません。
$var3の中は空ではありません。

配列のインデックスが0の場合、empty()はtrueを返しますが配列のインデックスが1以上の場合、empty()はfalseを返します。

nullの変数をチェックする場合

nullの変数をチェックする場合を見てみます。

出力結果

$var1の中は空です。
$var2の中は空です。

変数の中身がnullである場合はempty()はtrueを返します。

定義していない変数をチェックする場合

定義していない変数をチェックする場合を見てみます。

出力結果

$var1の中は空です。

定義していない変数の場合、empty()はtrueを返します。

isset()、empty()、is_null()で比較

PHPで空チェックを行う関数はempty()以外にもisset()関数とis_null()関数があります。
これらの関数は似てるようで、返す値が少し異なります。

その為、empty()とisset()、is_null()ではどのような値を返すのか比較してみましょう。

isset()とは

isset()は、変数が設定されているかどうかをチェックする関数となります。
つまり、変数を宣言する必要があり、NULLではありません。

この関数は、変数が存在しNULLでない場合はtrueを返し、それ以外の場合はfalseを返します。

is_NULL()とは

is_null()は、変数がNULLかどうかをチェックする関数となります。
この関数は、変数がNULLの場合はtrue(1)を返し、それ以外の場合はfalse / nothingを返します。

isset()、empty()、is_null()で比較した結果

isset()とempty()と is_null()でこれらの関数がある値に対して何を返すのか比較してみました。
すると以下のような結果となります。

変数の値
($var)
isset
($var)
empty
($var)
is_null
($var)
“” (空文字) true true false
” “(スペース) true false false
false true true false
true true false false
array()(空配列) true true false
null true true false
“0”(0は文字列) true true false
0(0は整数) true true false
0.0(floatとしての0) true true false
$var1; (宣言された変数であるが、値がない) false true true
NULLbyte (“\0”) true false false

似ているからどれを使っても大丈夫だと思って使うのはあまりおすすめしません。
用途に合わせて使うようにしましょう。

今回のポイント

empty()で変数が空かを判定

⚫︎ PHPで変数が空かを判定するにはempty()関数を使用する

⚫︎ empty()関数で変数が0の整数である場合はtrue、変数が1以上の整数である場合はfalseを返す

⚫︎ empty()関数で変数が空の文字列である場合はtrue、変数が文字列である場合はfalse、変数が0の文字列である場合はfalseを返す

⚫︎ empty()関数で配列のインデックスが0の場合はtrue、配列のインデックスが1以上の場合はfalseを返す

⚫︎ empty()関数で真偽値がtrueの場合はfalse、真偽値がfalseの場合はtrueを返す

⚫︎ empty()関数で変数の中身がnullである場合はtrueを返す

⚫︎ empty()関数で定義していない変数の場合はtrueを返す

⚫︎ isset()関数やempty()関数、is_null()関数は指定する変数によって返す値が異なるため注意が必要

Writer

ST

株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報