こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのnull判定の仕方について説明します。徐々にプログラムについて慣れてくると、値の分からない変数や配列を扱うことがありますが、変数がnullや空白だとエラーになってしまいます。しかし、その対処法やnull判定方法は、プログラムによって異なるため、混乱しちゃいますよね。
PHPのnull判定について、基本構文だけでなく実際のコードを用いた解説もするので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
null判定とは?
そもそも、nullとは何でしょうか。なんとなく、「値がないこと」とイメージできるかもしれませんが、実際その通りです。nullとは、プログラミングに登場する、値を持たないことを値で表す特殊な存在です。
しかし、皆さんはnullと「’ ‘」(空文字)や0、falseとの違いも説明できますか?特に、nullと空文字の違いは、プログラミングに慣れている人でも、不明瞭なところがあるかもしれません。
nullは先述したように、「何もないこと」を表す状態である一方で、空文字は長さが0の文字列のことを指します。どちらも、存在しないことを表しますが、このように細やかな違いがあることは把握しておきましょう。
以下の記事では、JavaScriptですが空白をチェックする方法などが説明されています。
【初心者向け】JavaScriptで空白をチェックする方法は?メソッドの使い方や実践コード例について解説!また、PHPのnullと空文字、falseや0について、以下のようなプログラムを用いて比較を実施してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// 変数$aにnullを代入 $a = null; // 変数$bに空文字を代入 $b = ''; // 変数$cにfalseを代入 $c = false; // 変数$dに0を代入 $d = 0; // 比較結果を表示 var_dump($a == $a); // "true"が返される var_dump($a == $b); // "true"が返される var_dump($a == $c); // "true"が返される var_dump($a == $d); // "true"が返される // 「データ型」についても一致しているかチェック var_dump($a === $a); // "true"が返される var_dump($a === $b); // "false"が返される var_dump($a === $c); // "false"が返される var_dump($a === $d); // "false"が返される |
PHPにおいて、何もないことを表す4つについて、それぞれ比較を行ってみました。その結果、比較演算子の「==」で比較を行った場合は、すべてtrueとなる一方で、イコールを3つ用いた「===」による比較では、異なる結果となりました。これは、先ほどnullと空文字の違いでも説明したように、データの「型」が異なるため、「===」ではfalseという結果になります。
PHPにおける、nullを始めとした変数の詳しい説明については、以下の記事で説明されています。
ざっくりPHP入門(初心者〜中級者向け)PHPのnull判定方法
それでは、ここからは本題のPHPにおけるnullの判定方法について説明します。今回は、nullを判定したい際に用いられるメソッド3選について、基本構文から実践用途例を用いて、分かりやすく解説します!
is_null関数
1つ目は、is_null関数です。nullかどうかという情報のみ判別し、nullだった場合のみtrueを返します。そのため、空文字などだった場合は「false」となります。
それでは、基本構文から見てみましょう。
基本構文
1 |
is_null(調査したい変数) |
is_null関数は、このように使います。is_nullに対して、調査したい変数を括弧内に書くだけで、その変数がnullかどうか判別できます。厳密なnull判定を行いたいときに、とても向いているメソッドです。では、実際の使用例を見てみましょう。
実践コード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// 変数$num_1にnullを代入 $num_1 = null; // 変数$num_2,$num_3に文字列を代入 $num_2 = 'a'; $num_3 = ''; if(is_null($num_1)){ echo 'nullです'; } else { echo 'nullではありません'; } if(is_null($num_2)){ echo 'nullです'; } else { echo 'nullではありません'; } if(is_null($num_3)){ echo 'nullです'; } else { echo 'nullではありません'; } |
変数$num_1、$num_2、$num_3にそれぞれ、nullや文字列、空文字を代入して、is_null関数を用いた判別のプログラムを書きました。
if文を用いて、is_null関数を用いた変数の調査結果が、trueかfalseで処理内容が異なります。このプログラムを実行した結果が次のようになります。
1 2 3 |
nullです nullではありません nullではありません |
このように、nullのみに対して、is_null関数はtrueを返すことがわかりますね。なお、nullは大文字(NULL)でも、同様の結果となり、大文字と小文字の判別は行われないことに注意してください。
isset関数
続いて、isset関数です。こちらは、is_null関数とは違い、nullではないときにtrueが返ってきます。
基本構文
1 |
isset(調査したい変数) |
isset関数は、このように使います。issetに対して、調査したい変数を括弧内に書くだけで、その変数がnullかどうか判別できます。空文字やfalse、0に対してもtrueが返ってきて、nullや宣言されていない変数のときにfalseとなります。
では、実践コード例を見てみましょう。
実践コード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 変数$num_1にnullを代入 $num_1 = null; // 変数$num_2に数値を代入 $num_2 = 5; if(isset($num_1)){ echo 'nullではありません'; } else { echo 'nullです'; } if(isset($num_2)){ echo 'nullではありません'; } else { echo 'nullです'; } |
isset関数の実践使用例です。ここでは、nullと数値の比較を、isset関数を用いて実施しました。このプログラムを実行すると、次のようになります。
1 2 |
nullです nullではありません |
if文の中身に注意してください。ifの条件がtrueだった場合は「nullではありません」と表示されます。一方で、falseだったときに「nullです」と表示されます。そのため、このような結果となります。
なお、isset関数については、以下の記事で詳しく説明されています。
【PHP入門】わかりやすい!issetの使い方!empty関数
最後にempty関数について説明します。empty関数は、nullや空文字を調査したいときに使用されます。では、基本構文から見てみましょう。
基本構文
1 |
empty(調査したい変数) |
調査したい変数に対して、empty関数はこのように使います。empty関数は、nullの他にも空文字や0、’0’、falseなどに対してもtrueを返すため、厳密なnull判定を行うことはできませんが、「何もない状態かどうか」調査したい場合に適したメソッドです。
実践コード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// 変数$num_1にnullを代入 $num_1 = null; // 変数$num_2に数値を代入 $num_2 = 10; // 変数$num_3に空文字を代入 $num_3 = ''; if(empty($num_1)){ echo 'nullの可能性があります'; } else { echo 'nullではありません'; } if(empty($num_2)){ echo 'nullの可能性があります'; } else { echo 'nullではありません'; } if(empty($num_3)){ echo 'nullの可能性があります'; } else { echo 'nullではありません'; } |
empty関数の実践使用例です。ここでは、nullと数値、空文字の比較を、empty関数を用いて実施しました。このプログラムを実行すると、次のようになります。
1 2 3 |
nullの可能性があります nullではありません nullの可能性があります |
empty関数は、nullに対してtrueを返すため、変数$num_1はtrueとなりますが、数値が格納されている変数$num_2はfalseとなります。一方で、空文字が格納されている変数$num_3は、nullではありませんが、先述したempty関数の特性上、trueが返ってきます。
このように、null判定を行うためのメソッドはいくつか準備されていますが、それぞれ特性がことなるため、適宜使い分けることが必要ですね!
まとめ
いかがでしたでしょうか?今回は、PHPのnull判定について説明しました。
PHPのnull判定について理解し、is_null関数などを用いてエラーを防ぐようにすることで、プログラムの精度を高めることができます。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。