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

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

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

この記事では、

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


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

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

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

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

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

目次

empty関数とは

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

基本構文

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

empty($変数名または配列名、式)

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

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

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

empty関数の使い方

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

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

<?php

$var = 0;
//変数:0なのでTRUE
if (empty($var)){
  echo '$varは0です。<br>';
}

$str = '';
//変数:空なのでTRUE
if (empty($str)){
  echo '$strは空です。';
}

$array = [];
//配列:空なのでTRUE
if (empty($fruits)){
  echo '$arrayは空です。<br>';
}

?>

実行結果:

$arrayは空です。
$varは0です。
$strは空です。

$変数または$配列をセットします。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関数と同じようなコードとなります。

isset($変数 [, $別の変数…])

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

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

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

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

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

<?php

$fruits = ['apple', 'orange', NULL, 'banana', 'pineapple'];

foreach($fruits as $value){
  //isset関数の場合NULLの場合はFALSEになります
  if (isset($value)){
    //TRUEの場合に下記の内容を出力させます
    echo 'NULLではありません';
  }else{
    //FALSEの時に下記の内容を出力させます
    echo 'NULLです';
  }
  echo '<br>';
}

?>

実行結果:

NULLではありません
NULLではありません
NULLです
NULLではありません
NULLではありません

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

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

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

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

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

<?php

$fruits = ['apple',"", '0', NULL, 'pineapple'];

foreach($fruits as $value){
  //isset関数の場合NULL以外はTRUEになります
  if (isset($value)){
    //TRUEになる場合に下記内容を出力します
    echo 'NULLではありません';
  }else{
    //FALSEになる場合に下記内容を出力します
    echo 'NULLです';
  }
  echo '<br>';
}


echo '<br/>';
echo '<br/>';


$fruits = ['apple',"", '0', NULL, 'pineapple'];

foreach($fruits as $value){
  //empty関数の場合空の場合はTRUEになります。
  if (empty($value)){
    //TRUEになる場合に下記内容を出力します
    echo '空です';
  }else{
    //FALSEになる場合に下記内容を出力します
    echo '空ではありません';
  }
  echo '<br>';
}

実行結果:

NULLではありません。
NULLではありません
NULLではありません
NULLです
NULLではありません


空ではありません
空です
空です
空です
空ではありません

実行結果のとおり、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関数:

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

PHPを継続的に学習するコツ

PHPの学習をしていて、わからないところが多く何回も調べながらやるのは正直、嫌になってしまいますよね。そこで、どのようにすれば継続的に学習を続けて行けるのかそのコツをご紹介します。

目的を明確にする

まずは、なぜPHPを学んでいるのか明確にしましょう。例えば、PHPを学んで

  • Webサイトが作りたい
  • WordPressの編集がしたい
  • エンジニアとして転職したい
  • フリーランスを目指したい


など、目的は色々あると思います。

この目的を明確にすることがとても大事で、PHPを学ぶ学習意欲に繋がっていきます。目的がないまま学習をしていると、学習すること自体が目的になってしまい、ゴールのない果てしない道を進むことになります。その結果、挫折してしまう人が多いのが現状となっています。

そうならないためにも、PHPを学ぶ目的は言えるようにしましょう。もし言えない場合は、学ぶプログラミング言語自体間違っている可能性もあります。なので、しっかり目的から学んでいる言語があっているか確認しましょう。

学習プランを決める

目的が明確になったら、次に学習プランを立てましょう。この学習プランを立てずに学習している人が多いのですが、学習プランがないと自分が今どのくらい進んでいて、後どのくらい学習をすればいいのか見えないので、学習をすること自体がきつく長続きしません。

学習を継続的に続けるためには学習プランは必須とも言えます。いつまでに、どのレベルになっていて、最終的なゴールはいつ達成するのかはしっかり決めましょう。

先生を見つける

「何度もエラーになって、自分で調べては修正する」この繰り返しがPHPを学習していると起こります。調べてもよくわからないし、時間もかかってしまってプラン通りに学習が進まないというのは当然のように起こります。

調べて直したけどうまく動かないしどうなってんの

このように思い、学習をすること自体に嫌気が指して挫折してしまう人も多いです。

そうならないためにも、「先生」を見つけることが大事になります。先生と言ってもそう簡単に探せそうにないですよね。最近ではSNSでもコミュニティーが増え、相談しやすい環境が増えてきています。こういったコミュニティーや勉強会を利用して先生を見つけるのも一つの手です。

自分に投資することも大事

学習サイトやアプリなど、無料で学習できる環境が整ってはいるものの自分に投資して学習をすることも大事です。本や有料学習サイトは、無料では学べない範囲の学習や機能が付いているので、効率的に学習をすることが可能です。

そして、投資のもう一つの方法がプログラミングスクールで学ぶことです。

独学と違い、プログラミングスクールでは上で紹介した学習を継続するためのサポートが徹底されているので、最も効率の良い学び方と言えるでしょう。先生も自分で探す必要がないので、エラーなどで躓いて時間がかかる心配もありません。

ですが、当然いきなりスクールに入るのは抵抗がありますよね。

その場合は、弊社で行っている無料カウンセリングへ参加してみてください。この無料カウンセリングでは、なぜPHPを学ぶのかその目的をヒアリングして、本当にPHPを学ぶべきなのか、その学習プランはどのように立てるのかなどの提案をしています。

目的をヒアリングすることで、あなたに最適な言語や学習プランが分かるので、最速でエンジニアを目指せるイメージがわきます。

手軽にしかもオンラインでも受けられるので、ぜひ一度目的を明確にしてみましょう。

無料カウンセリングに申し込む

まとめ

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

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


		

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次