【PHP】isset empty is_null の使い分けについて解説

  • 2023.07.06
       
【PHP】isset empty is_null の使い分けについて解説

はじめに

基本的にプログラミング言語は値の代入されていない変数へアクセスしようとすると初期化前の領域への参照としてエラーが発生します。
それを回避するためには変数の値が初期化済みか事前に検証を行う必要があります。

他言語だと、以下のよう書くケースもありますが、php では判定用の専用メソッドが用意されています。

$value == null

php では isset , empty , is_null といった関数を使用して値判定を実行します。

ここからは各メソッドの役割、および実際の使い方について説明します。

プログラミングの基礎からサイト制作まで
↓実践力が身につくプログラミングスクール↓

ITエンジニアの学校 テックマニアスクール

≫モニター割引キャンペーン実施中!≪

各メソッドの役割と使い分け

基本的にプログラミングにおける if は true の場合に実行したい処理を書くことが基本です。
そのため各判定用メソッドの意味合いを正確に把握することが大切と言えるでしょう。

各メソッドの動作は以下の通りです。

各メソッドの動作

メソッド 動作
isset値が格納されている場合に true 、null の場合は false の値を発生させる。
empty値が格納されていない場合に true 、そうでない場合に false の値を発生させる。
is_null値が null である場合に true 、そうでない場合に false が戻り値となる。

実利用時の戻り値例

名称 種別 未定義変数 NULL 0 String(“”) String(“aiueo”) 空配列
isset 言語構造 False False True True True True
empty 言語構造 True TrueTrue True False True
is_null 関数 True TrueFalse False False False

言語構造とは言語そのものにハードコーディングされた処理を指し、関数よりも先に参照されることから処理速度が早いという特徴があります。
そのためこれらの判定処理を行う場合は isset や empty を使用すると無駄を減らすことが可能です。

「値が入っているかを確かめて、もし値が存在しなかったらエラーを発生させたい」といった場合は判定条件が正となるため isset。
「値が入っていなかった場合、デフォルト値を代入したい」といった場合は判定条件が負となるため empty を使うと良いですね。

あくまでもこれらの処理は変数の値の有無を検証するためだけに存在するため isset 等は空配列 でも True となる場合があり検証には向かない場合もあります。
配列の要素が存在するかを確認したい場合は「count」を用いたり、要素番号を直接指定する「isset( $value[0] )」といった方法で検証を行う必要があることに注意しましょう。

「!empty($value)」とすることも可能ですが、「値が入っていたら」という条件に対しての操作であるにも関わらず empty を用いると否定条件の if 文となり可読性が落ちるため推奨できません。
最後に、上記のパターンを検証したサンプルと実行結果を記載しますため、参考にご覧ください。

尚、is_null は未定義変数を判定しようとすると 警告表示 notice となるため省略したリストとなります。
ご承知おきください。

サンプル

<?php
// Your code here!
$nullValue = null;
$intValue = 0;
$strEmptyValue = "";
$strValue = "aiueo";
$arrayValue = [];
echo( isset( $value ) ? "未定義変数 は isset において true" : "未定義変数 は isset において false");
echo("\n");
echo( isset( $nullValue ) ? "nullValue は isset において true" : "nullValue は isset において false");
echo("\n");
echo( isset( $intValue ) ? "intValue は isset において true" : "intValue は isset において false" );
echo("\n");
echo( isset( $strEmptyValue ) ? "strEmptyValue は isset において true" : "strEmptyValue は isset において false" );
echo("\n");
echo( isset( $strValue ) ? "strValue は isset において true" : "strValue は isset において false" );
echo("\n");
echo( isset( $arrayValue ) ? "arrayValue は isset において true" : "arrayValue は isset において false" );
echo("\n");
echo("\n");
echo( empty( $value ) ? "未定義変数 は empty において true" : "未定義変数 は empty において false");
echo("\n");
echo( empty( $nullValue ) ? "nullValue は empty において true" : "nullValue は empty において false");
echo("\n");
echo( empty( $intValue ) ? "intValue は empty において true" : "intValue は empty において false" );
echo("\n");
echo( empty( $strEmptyValue ) ? "strEmptyValue は empty において true" : "strEmptyValue は empty において false" );
echo("\n");
echo( empty( $strValue ) ? "strValue は empty において true" : "strValue は empty において false" );
echo("\n");
echo( empty( $arrayValue ) ? "arrayValue は empty において true" : "arrayValue は empty において false" );
echo("\n");
echo("\n");
echo( is_null( $nullValue ) ? "nullValue は is_null において true" : "nullValue は is_null において false");
echo("\n");
echo( is_null( $intValue ) ? "intValue は is_null において true" : "intValue は is_null において false" );
echo("\n");
echo( is_null( $strEmptyValue ) ? "strEmptyValue は is_null において true" : "strEmptyValue は is_null において false" );
echo("\n");
echo( is_null( $strValue ) ? "strValue は is_null において true" : "strValue は is_null において false" );
echo("\n");
echo( is_null( $arrayValue ) ? "arrayValue は is_null において true" : "arrayValue は is_null において false" );
?>

実行結果

未定義変数 は isset において false
nullValue は isset において false
intValue は isset において true
strEmptyValue は isset において true
strValue は isset において true
arrayValue は isset において true
未定義変数 は empty において true
nullValue は empty において true
intValue は empty において true
strEmptyValue は empty において true
strValue は empty において false
arrayValue は empty において true
nullValue は is_null において true
intValue は is_null において false
strEmptyValue は is_null において false
strValue は is_null において false
arrayValue は is_null において false

以上となります。
それでは良き php ライフを!

PHPの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、PHPに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事