emptyとは?
emptyは、変数に値が入っているかどうかを確認するための関数です。
例えば、「お問い合わせフォームで名前が入力されているか」や「商品の在庫数が0になっていないか」といった確認をするときに使います。この関数の便利な点は、さまざまな「空っぽの状態」をまとめて判定できることです。
emptyの特徴を見てみましょう。
emptyの特徴
- 空文字列("")、数値の0、nullなど、さまざまな空の状態をまとめて判定できる
- 変数が定義されていない場合でもエラーを出さずに安全に確認できる
- 戻り値は「当てはまる」(true)か「当てはまらない」(false)のどちらか
実際の開発では、ユーザーが入力フォームを空のまま送信したときの処理や、データベースから取得した情報が空でないかをチェックする場面で有用です。
基本構文
empty関数の使い方はとてもシンプルです。調べたい変数を括弧の中に書くだけで、その変数が空かどうかを確認できます。
結果は「当てはまる」か「当てはまらない」で返ってきます。変数が空の場合は「当てはまる」、何かしら値が入っている場合は「当てはまらない」という結果になります。
まずは、基本的な使用例を見てみましょう。
出力結果
変数は空です
このプログラムでは、$valueに空文字列("")を代入しています。empty($value)で変数が空かどうかを確認し、空の場合はメッセージを表示します。
次に、値が入っている場合の例も見てみましょう。
出力結果
値があります: ネコ
このプログラムでは、$animalに「ネコ」という文字列が入っています。empty($animal)は「当てはまらない」(false)を返すため、elseの部分が実行され、「値があります: ネコ」が表示されます。
実用例
ここからは、empty関数を使ったコード例を見ていきましょう。フォーム処理、配列操作、データベース処理など、実務でも活用するような処理です。
このような例を通じて、「変数が空かどうかを安全に確認して活用する」というemptyの基本的な使い方と考え方を学びましょう。
empty関数を使いこなせるようになると、エラーを事前に防いで、安全で信頼性の高いWebアプリケーションを作れるようになります。
どの例も動物を題材にした身近な内容になっているので、プログラミング初心者の方でも理解しやすくなっています。実際に手を動かしながら、empty関数の便利さを体験してみましょう。
フォーム入力値の検証
ユーザーがWebフォームに入力した値が空でないかをチェックする場合の実装例です。empty関数を使用することで、空文字列や未入力の項目を効率的に判定できます。この方法は入力必須項目の検証で広く使用されています。
出力結果
動物名を入力してください
まず、$_POST['animal'] ?? ''で、フォームから送信された動物名を取得しています。
??は「Null合体演算子」と呼ばれ、左側の値が存在しない場合に右側の値(ここでは空文字列)を使用します。
ここでは、フォームで動物名が入力されていればその値を、何も入力されていなければ空文字列を$userInputに代入するという役割を果たしています。
次に、empty($userInput)で入力値が空かどうかを確認し、空の場合は入力を促すメッセージを表示し、値がある場合は入力内容を表示します。
配列要素の存在確認
配列の特定のキーに値が格納されているかを確認する際の例です。
empty関数は配列の要素が空の場合だけでなく、キー自体が存在しない場合にもtrueを返すため、配列操作において非常に便利です。
出力結果
犬の情報が空です 猫: ネコ
このプログラムでは、$animalsという配列を作成し、'dog'キーには空文字列、'cat'キーには「ネコ」を格納しています。
empty($animals['dog'])は空文字列に対して「当てはまる」(true)を返すため、「犬の情報が空です」が表示されます。
その後、猫の情報も表示することで、配列の他の要素には正常にアクセスできることを確認しています。
数値の0判定
数値型の変数が0の場合もemptyはtrueを返します。この特性を利用して、カウンターや計算結果が0かどうかを判定できます。
出力結果
動物がいません
このプログラムでは、$animalCountに数値の0を代入しています。empty($animalCount)は数値の0に対して「当てはまる」(true)を返すため、「動物がいません」というメッセージが表示されます。
この動作は、在庫管理や人数カウントなどで「0個や0人の場合は特別な処理をしたい」という場合に便利です。
ちなみに、数値の0だけでなく文字列の"0"についてもemptyは「当てはまる」と判定するため、覚えておきましょう。
nullチェックの簡略化
変数がnullかどうかを判定する場合、empty関数を使用することでシンプルに記述できます。データベースから取得したデータがnullの場合の処理や、オプショナルなパラメータの存在確認などで活用されます。
オプショナルなパラメータ(オプション引数)とは、関数を呼び出す時に省略してもよい引数のことです。
出力結果
動物名が設定されていません
このプログラムでは、$animalNameにnullを代入しています。
empty($animalName)はnullに対して「当てはまる」(true)を返すため、「動物名が設定されていません」が表示されます。
ちなみに、値が空であることとnullの違いは明確にしておきましょう。
あやふやだという方は、下記の身近な例でそのイメージをつかんでください。
例えば、値が空ということは「コップはあるけど、中身が何も入っていない状態」です。コップという容器自体は存在していて、そこに水やジュースを注ぐことができます。ただ今は何も入っていないだけです。
nullは「そもそもコップそのものが存在しない状態」です。コップが用意されていない、または完全に取り除かれてしまった状態です。
このように、空は値として「何もない」ことを表し、nullは「値自体が定義されていないか無効」であることを示します。
また注意点ですが、「値が設定されていない」とは
- 変数が宣言されていない
- 変数の値がnull
この2つの状態のことです。
空文字("")も値の一種だということは覚えておきましょう。
複数条件の組み合わせ
複数の変数をまとめて空判定する場合の実装例です。論理演算子と組み合わせることで、複雑な条件分岐を簡潔に記述できます。
フォームの複数項目を一度にチェックするような場面で、特に便利な方法です。
出力結果
名前または種類が未入力です
このプログラムでは、$nameと$typeの両方に空文字列を代入しています。empty($name) || empty($type)では、「OR演算子(||)」を使用して、どちらか一方でも空の場合に「当てはまる」(true)となるようにしています。
この例では両方とも空なので、条件が満たされて「名前または種類が未入力です」が表示されます。
空配列の判定
配列自体が空かどうかを判定する場合の使用例です。empty関数は要素数が0の配列に対してもtrueを返すため、配列にデータが格納されているかを簡単に確認できます。
リストの表示前チェックなどで重宝します。
出力結果
動物リストが空です
このプログラムでは、$animalListに空の配列([])を代入しています。空の配列は要素が一つもないため、empty($animalList)は「当てはまる」(true)を返します。
この機能は、データベースから取得した結果が空の場合や、検索結果が見つからなかった場合の処理に便利です。
文字列の0判定
文字列として"0"が格納されている変数もemptyはtrueと判定します。
この動作は時として予期しない結果を生む場合があるため、厳密な比較が必要な場合は他の判定方法との使い分けが重要になります。
出力結果
IDが無効です
このプログラムでは、$animalIdに文字列の"0"を代入しています。empty関数は文字列の"0"も空と判定するため、「IDが無効です」が表示されます。
"0"に対する挙動は、注意点として覚えておきましょう。
未定義変数の安全な判定
変数が定義されていない場合でも、empty関数はエラーを発生させずにtrueを返します。
この特性により、変数の存在確認と空判定を同時に行えるため、エラーハンドリングが簡潔になります。
出力結果
変数が未定義または空です
このプログラムでは、$undefinedAnimalという変数を事前に定義せずにempty関数で確認しています。
通常、未定義の変数にアクセスするとエラーが発生しますが、empty関数は安全に「当てはまる」(true)を返します。
この機能により、変数が存在するかどうかを事前にチェックする手間を省くことができ、コードをよりシンプルに書くことができるという利点があります。
まとめ
empty関数は、変数が空かどうかを確認する重要な機能です。
この記事では、emptyの基本的な構文から実用的な応用例まで解説しました。emptyの活用場面について確認しておきましょう。
emptyが活躍する場面
- フォームでユーザーが入力した値が空でないかをチェックしたいとき
- データベースから取得した情報が存在するかを確認したいとき
- 配列に要素が入っているかどうかを判定したいとき
- プログラムでエラーを防ぎながら安全に処理を進めたいとき
emptyを使う上で押さえておきたいポイントは下記です。
重要なポイント
- 数値の0や文字列の"0"も空として判定される
- 変数が定義されていなくてもエラーが発生しない
- さまざまな空の状態をまとめて確認できる
初めてPHPを学ぶ方も、この記事で紹介したemptyの基本的な使い方と8つの実用例を参考に、コードを書いてみてください。
変数が空かどうかを適切に確認できるようになれば、ユーザーにとって使いやすく、エラーの少ないプロダクトを作ることができるようになります。これは実際の開発で非常に重要なスキルです。
ぜひemptyを正しく理解し活用することで、より実用的で安全なPHPプログラムを作成できるようになりましょう。