emptyで配列が空かチェックしよう!issetとの違いもあるよ~PHP入門~

配列の中身が空かどうか判断するときにどうすればよいでしょうか?

また、「empty関数isset関数といった似たような関数の使い分けがわからない、よく忘れる」など悩みを抱えている方はこのぜひ記事をご覧ください!

この記事では、

  • empty関数を使用して、配列が空か判定する方法
  • empty関数とisset関数の違い


という基本的な内容の解説と

  • empty・isset・is_nullの真偽値結果一覧

とそのサンプルコードを記述していきますので、ぜひ参考にしてみてください。

今回は配列を使って要素を判定していく方法も紹介しているので、もし配列についてまだよくわからないな、という方はまずは下記記事から読んでみてくださいね。

配列に値を追加する方法や、配列をコピーする方法など、配列に関するさまざまな使い方について詳しく解説しています。

empty関数とは

empty関数とは、英語のemptyが「空」の意味をしているように、配列や変数が空であるか判定します。

基本構文

empty関数は、引数には配列、変数、式を指定します。

返り値:
引数に指定した変数が存在し、その値が空や0でなければFALSEを返し、それ以外の場合はTRUEを返します。

以下の値は空(TRUE)とみなされるので注意しましょう。

””
空文字列
0整数 の 0
0.0浮動小数点数の 0
”0″文字列 の 0
NULL
FALSE
array() 空の配列
$var;変数が宣言されているが、値が設定されていない

empty関数の使い方

empty関数は主にif文と一緒に使われもし$変数または$配列がemptyの時処理するというように書いていきます。

以下にempty関数の基本的な使い方を紹介します。

実行結果:

$変数または$配列をセットします。if文を使ってもし$変数または$配列がemptyの場合echoで出力する、と記述します。

emptyの真偽値がTRUEの場合にechoが処理されます。

empty関数と似て非なる関数isset

empty関数では、配列の要素が空や0、NULLの場合にTRUEとなることが分かりました。

このempty関数と似たような、配列の要素の値を確認する関数は他にもいくつかあり、その中でよく比較されるisset関数があります。

このemptyとissetの2つを比べると混乱してしまうことがよくありますが、実際どのような違いがあるのでしょうか。

isset関数とは・empty関数との違い

isset関数は変数に値がセットされており、かつNULLでないことを判定します。

返り値:
引数には配列の値または変数を指定し、NULLの場合はbool(真偽値)型のFALSEを返します。

簡単に言うと、NULL以外はTRUEを返すので、配列の要素がNULLかそうでないかを確認できるということです。基本構文の書き方は、empty関数と同じようなコードとなります。

empty関数とisset関数では、empty関数は$変数または$配列がnullの時はTRUE(空)

となるのに対し、isset関数は$変数がnullの時はFALSE(null)と判断をしてくれる違いがあります。

isset関数の使い方・empty関数との比較

isset関数を使用して、変数がNULLでないことを判定する処理を以下に記述します。

foreach文を使ってループして要素1つ1つを取り出します。

実行結果:

配列$fruitsの中が空かforeach文でループして要素1つずつ判定していきます。

配列の中にNULLの要素が存在するか調べたい場合は、if文の中にisset関数を使って1つずつ判定します。

配列の中に空の要素が存在するか調べたい場合は、if文の中にempty関数を使ってで1つずつ判定することができます。

foreach文について、よくわからない、という方は下記記事を読んでみてくださいね。

では次に配列の要素がNULLや空、0の場合、isset関数とempty関数を使って要素を1つずつ判定した場合をみてみましょう。

実行結果:

実行結果のとおり、isset関数ではNULL以外、要素が空(‘’)でも0でも結果は「NULLではありません」となります。

一方empty関数では、配列$fruitsには要素の2~4番目に空判定される空文字と整数の0、NULLを指定しているので、結果は空ですとなりました。

isset関数についての詳しい解説が以下の記事にあるので併せて読んでみてくださいね。

empty・isset・is_nullの真偽値結果一覧

emptyやissetを使っていると、真偽値がどうなるのか頭の中が混乱してしまうことがあります。

emptyやisset以外でもis_nullという、NULLかどうかを判定する関数も一緒によく混乱をしてしまうことがありますのでis_nullも含めた一覧を作成しました。

混乱してしまった場合や混乱しないためにも、真偽値結果一覧とサンプルコード一緒に活用してください。

emptyissetis_null
‘文字列’FALSETRUEFALSE
‘’ (空文字列)TRUETRUEFALSE
‘ ‘ (スペース)FALSETRUEFALSE
0 (整数 の 0)TRUETRUEFALSE
0.0 (浮動小数点数の 0)TRUETRUEFALSE
‘0’ (文字列 の 0)TRUETRUEFALSE
NULLTRUEFALSETRUE
FALSETRUETRUEFALSE
array[] (空の配列)TRUETRUEFALSE
$var; (変数が未定義)TRUEFALSETRUE

サンプルコード:

unset関数:

array_filter関数:

配列を扱った処理は、実際の開発でもよく使用しますので、この機会にぜひ覚えておきましょう。

まとめ

ここではempty関数についてとempty関数とisset関数の違いについての解説をしました。empty関数またはisset関数を使用する際に、頭がこんがらがらないよう、ぜひ一覧も使ってみてください。

もし、配列の要素が空であるか判定する方法を忘れてしまったら、この記事を思い出してくださいね!

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

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

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

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

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

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

cta_mtm1

LINEで送る
Pocket

書いた人

muramatsu

muramatsu

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

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

おすすめコンテンツ

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

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