【PHP】emptyを使った変数の空判定の方法を解説

【PHP】emptyを使った変数の空判定の方法を解説

変数が空かどうかを判定する方法について、正しく理解していますか?

PHPには、変数の中身が空であるかを判定するために「empty」と呼ばれる機能が用意されています。しかし、issetとどのように違うのかが分からず、適切に使い分けができているか理解していない人もいるのではないでしょうか?

そこで今回は、

・emptyの機能・使い方
・issetとの違いと使い分け方

について解説します。

emptyの基本

emptyは、PHPが提供する機能で、変数の中身が空であるかを判定します。テキストボックスやラジオボタンなどの入力値があるか否かなど、多くのアプリケーションでは入力値が空であるかを判定する場面が頻繁に出てきます。そのため、プログラム中の変数に対する空チェックは、アプリケーションを開発するうえで最も基本的な要素と言えます。

emptyは、1つの引数を取り、変数であれば何でも引数として渡せます。戻り値は論理値で、変数の中身が空であればTrue、そうでなければFalseを返します。簡単な使い方を、以下のサンプルコードを示します。

サンプルコードでは、12という値が格納された変数について、emptyを使った空チェックを行っています。戻り値は論理値なので、チェック後にif文やwhile文などと組み合わせるのが、一般的な使い方です。今回は、12という値が格納されており空ではないため、emptyの結果はfalseになります。

emptyの使い方

ここでは、複数の例を挙げて、emptyをどのように使えばよいのか詳しく解説していきます。

文字列の空チェック

emptyの最も一般的な使い方は、変数に文字列が格納されているかをチェックする方法です。PHPの文字列型における空の状態・空でない状態は、以下の通りです。

変数の中身 状態であるか否か
“” 空である
NULL 空である
“0” 空である
“0”以外の1字以上の文字列 空ではない

上記の表で特に注意したいのが「”0″」が格納されている場合です。一見すると文字が格納されているため空ではないように思えますが、PHPのemptyでは「”0″」が格納されている変数は、空であると判定します。

サンプルコードを以下に示します。「””」「NULL」「”0″」以外は、空白文字列や全角の0であっても空ではないという判定になるため、その点は注意しましょう。

ブラウザ確認結果

ブラウザ確認結果

もし、変数の中身に何かしら文字が含まれているか否かをチェックしたいのであれば、比較演算子(===)を使ってチェックする方法がおすすめです。サンプルコードは、以下の通りです。

ブラウザ確認結果

ブラウザ確認結果

また、空白文字を空として判定させるのであれば、trim関数を併用して以下のように記述するのがおすすめです。

ブラウザ確認結果

ブラウザ確認結果

数値の空チェック

整数や小数などの数値に対しても、emptyを使うことが可能です。数値における空の状態とそうでない状態は、以下の通りです。

変数の中身 状態であるか否か
0、0.0 空である
0以外 空ではない

数値の場合は、0かそれ以外かで区別可能なので、文字列の場合よりも難しくありません。サンプルコードは、以下の通りです。

ブラウザ確認結果

ブラウザ確認結果

論理値の空チェック

論理値の空である状態・そうでない状態は以下の通りです。

変数の中身 状態であるか否か
true 空ではない
false 空である

特にfalseが格納されている状態は、値が入っているのに空の状態と解釈されるため、注意してください。サンプルコードは以下の通りです。

ブラウザ確認結果

ブラウザ確認結果

配列の空チェック

配列の空である状態と空でない状態は、配列の要素数によって以下のように決まります。

配列の要素数 状態であるか否か
0 空である
1以上 空ではない

配列の各要素が空であったとしても、要素数として0でなければ空ではない点に、注意しましょう。サンプルコードは、以下の通りです。

ブラウザ確認結果

ブラウザ確認結果

変数の存在チェック

emptyの特殊な使い方として、変数の存在チェックが挙げられます。はじめに、以下のサンプルコードをご覧ください。

①では、未だ定義されていない変数$valを、emptyの引数として渡していますが、定義されていない変数は空である状態と解釈するため、条件式はtrueとなります。次に②に注目すると、直前で$valに10を代入することで$valが定義されたため、条件式はfalseとなります。

ブラウザ確認結果

ブラウザ確認結果

issetとの違い

emptyと似ている機能に、issetというものがあります。issetも、変数を引数として渡し論理値を戻り値としています。issetの機能は、変数に値がセットされているかを判定することです。

さまざまな引数に対するissetの戻り値は、以下の通りです。

引数 戻り値
“” true
“0” true
0 true
配列(要素数0) true
配列(要素数1) true
論理値 true
未定義の変数 false
NULL false

以下のサンプルコードでは、さまざまな値に対してemptyとissetの挙動を比較しているので、参考にしてみてください。

ブラウザ確認結果

ブラウザ確認結果

なお、結果画面の1行目に表示されている警告は、プログラム中で未定義の変数が配列に設定されているのが原因です。

【初心者向け】php「isset」で変数の中身を確認する方法 【PHP入門】わかりやすい!issetの使い方!

まとめ

いかがでしたか?

今回は、

・emptyの機能・使い方
・issetとの違いと使い分け方

について解説しました。

emptyは、その名前とは裏腹に、”0″やfalseが設定されている場合も空と解釈する部分に注意する必要があります。emptyを利用する際は、どのような状態を「空である」と解釈するかを、値ごとに整理したうえで、利用するか否かを検討するようにしましょう。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?