こんにちは。ライターのmuramatsuです。
今回は、変数の値がNULLかどうかを判定する方法の紹介です。変数にNULLや空白などが設定されていると、処理によっては参照エラーなどの例外が発生することもあります。
簡単な原因のエラーに何時間も取られてしまった
という事も考えられます。そのため、参照エラーによるシステムダウンなどを防ぐために、PHPでは変数の値がNULLや空か調べる関数が用意されています。
この記事では、
- NULL判定をする方法とは
- is_null関数で変数がNULLか調べる方法
- empty関数で変数が空白か調べる方法
- isset関数で変数がNULL以外か調べる方法
- is_null、empty、issetの3つの関数の結果一覧
を紹介していきます。
変数の値がNULLや空白か調べる方法について、わかりやすく解説していきす!
NULL判定をする方法とは
変数の値がNULLか空かを判定する手段として、is_null関数、empty関数、isset関数を使う方法があります。
それぞれの関数には以下の働きがあります。
empty関数 —– 変数の値が空か
isset関数 —– 変数の値がNULL以外か
is_null、isset関数のようにNULLかNULL以外かを調べるということは、変数の値がNULLになっている時のみにTrueかFalseを返すようになります。
empty関数のように空かを調べると「数値の0」「文字列の’0’」「浮動小数点の0.0」「NULL」「FALSE」「空の配列」「空の変数」なども空であるとみなされます。
それぞれの返り値は以下のようになります。
empty関数 —– 0、’0’、0.0、NULL、False、$array()、if($x)、未定義の変数はTRUE、それ以外はFALSE
isset関数 —– NULL以外の時にTURE、NULLの時はFALSE
これらの関数で値を判定するのには、var_dumpを使って出力させる方法とif文やif~else文を使う方法があります。
今回はif文を使った方法での解説をしていきます。if文がよく分からないという方は、以下の記事を参考にしてくださいね。
is_null関数で変数がNULLか調べる
変数の値がNULLかどうかをis_null関数で調べてみましょう。
is_null関数は、引数に対象の変数を指定します。
is_null関数は、指定した変数がNULLの場合はTRUEを返します。
変数が未定義の場合もTRUEを返しますが、エラーNotice: Undefined variableも一緒に出ます。
if文とis_null関数を使用して、変数の値がNULLかどうか調べるサンプルコードです。
<?php $value = NULL; if (is_null($value)){ echo 'NULLです。'; }else{ echo 'NULLではありません。'; } ?>
実行結果
NULLです。
is_null関数は変数がNULLかどうか調べる関数ですので、空白や0を指定してもFALSEを返します。
実際に以下のように変数に他の値を入れてvar_dumpで結果を出力してみましょう。
<?php $value = NULL; $value1 = 0; $value2 = '0'; $value3 = 0.0; $value4 = ''; $value5 = ' '; $value6 = False; $value7 = 'NULL'; $array = []; $array1 = ['a', 'b', 'c']; var_dump(is_null($value)); echo '<br>'; var_dump(is_null($value1)); echo '<br>'; var_dump(is_null($value2)); echo '<br>'; var_dump(is_null($value3)); echo '<br>'; var_dump(is_null($value4)); echo '<br>'; var_dump(is_null($value5)); echo '<br>'; var_dump(is_null($value6)); echo '<br>'; var_dump(is_null($value7)); echo '<br>'; var_dump(is_null($array)); echo '<br>'; var_dump(is_null($array1)); echo '<br>'; var_dump(is_null($value8)); //未定義の変数 ?>
実行結果は以下のようになりました。
変数の値 | 出力結果 |
---|---|
NULL | bool(true) |
0 | bool(false) |
'0' | bool(false) |
0.0 | bool(false) |
空の文字列 '' | bool(false) |
空白の文字列 ' ' | bool(false) |
False | bool(false) |
文字列の'NULL' | bool(false) |
空の配列 | bool(false) |
配列 | bool(false) |
未定義の変数 | Notice: Undefined variable: value7 (エラー) bool(true) |
NULLのみTrueが返ってきているのが分かりますね。また、定義をしていない変数を指定した場合もTrueが返ってきていますが、エラーも出ました。
empty関数で変数が空か調べる
次にempty関数を使用して変数が空かどうかを調べてみましょう。
empty関数は、引数に対象の変数を指定します。
empty関数は、指定した変数が空の場合はTRUEを返します。
if文とempty関数を使用して、変数の値が空白かどうか調べるサンプルコードです。
<?php $value = ''; if (empty($value)){ echo '空です。'; }else{ echo '空ではありません。'; } ?>
実行結果
空です。
その他「数値の0」「文字列の’0’」「浮動小数点の0.0」「NULL」「FALSE」「空の配列」「空の変数」なども空であるとみなされるのかvar_dumpで出力してみましょう。
<?php $value = NULL; $value1 = 0; $value2 = '0'; $value3 = 0.0; $value4 = ''; $value5 = ' '; $value6 = False; $value7 = ‘False’; $array = []; $array1 = ['a', 'b', 'c']; var_dump(empty($value)); echo '<br>'; var_dump(empty($value1)); echo '<br>'; var_dump(empty($value2)); echo '<br>'; var_dump(empty($value3)); echo '<br>'; var_dump(empty($value4)); echo '<br>'; var_dump(empty($value5)); echo '<br>'; var_dump(empty($value6)); echo '<br>'; var_dump(empty($value7)); echo '<br>'; var_dump(empty($array)); echo '<br>'; var_dump(empty($array1)); echo '<br>'; var_dump(empty($value8)); //未定義の変数 ?>
実行結果
変数の値 | 出力結果 |
---|---|
NULL | bool(true) |
0 | bool(true) |
'0' | bool(true) |
0.0 | bool(true) |
空の文字列 '' | bool(true) |
空白の文字列 ' ' | bool(false) |
False | bool(true) |
文字列の'NULL' | bool(false) |
空の配列 | bool(true) |
配列 | bool(false) |
未定義の変数 | bool(true) |
空白の文字列の場合でも、半角または全角スペースが入っているので「空」ではなくなりFalseになります。スペースでも値が入っている場合は全て Falseになっているのが分かりますね。
empty関数について詳しく知りたい方は、以下の記事を参考にしてください。
isset関数との違いについても記載されています。
isset関数で変数がNULLでないか調べる
isset関数を使用して、値を調べる方法を見ていきしょう。
変数の値がセットされている、またはNULLでないことを確認するには、isset関数を使用します。isset関数は、引数に複数の対象の変数を指定することができます。
isset関数はNULL以外であれば戻り値にTRUEを返します。
なおPHPのバージョン5.4.0からは文字列のオフセット値を非数値に設定した場合はFALSEを返すようになっています。if文とisset関数を使用して、変数の値がNULL以外か調べてみましょう。
<?php $value1 = 100; $value2 = NULL; if (isset($value1)){ echo '$value1はNULL以外です。'; echo '<br>'; // “!”を用いて「NULLでない場合」はechoを出力 if (!isset($value2)){ echo '$value2はNULLです。'; } } ?>
実行結果
$value1はNULL以外です。 $value2はNULLです。
isset関数は、値がセットされているかNULL以外でTRUEを返すので、空白文字や数値の0などを指定してもTRUEを返します。
is_null、empty関数と同じように、それぞれの値の結果をvar_dumpで出力してみましょう。
<?php $value = NULL; $value1 = 0; $value2 = '0'; $value3 = 0.0; $value4 = ''; $value5 = ' '; $value6 = 'False'; $value7 = False; $array = []; $array1 = ['a', 'b', 'c']; var_dump(isset($value)); echo '<br>'; var_dump(isset($value1)); echo '<br>'; var_dump(isset($value2)); echo '<br>'; var_dump(isset($value3)); echo '<br>'; var_dump(isset($value4)); echo '<br>'; var_dump(isset($value5)); echo '<br>'; var_dump(isset($value6)); echo '<br>'; var_dump(isset($value7)); echo '<br>'; var_dump(isset($array)); echo '<br>'; var_dump(isset($array1)); echo '<br>'; var_dump(isset($value8)); //未定義の変数 ?>
実行結果
変数の値 | 出力結果 |
---|---|
NULL | bool(false) |
0 | bool(true) |
'0' | bool(true) |
0.0 | bool(true) |
空の文字列 '' | bool(true) |
空白の文字列 ' ' | bool(true) |
False | bool(true) |
文字列の'NULL' | bool(true) |
空の配列 | bool(true) |
配列 | bool(true) |
未定義の変数 | bool(false) |
empty関数では0や空の場合は値が無いとみなされていましたが、isset関数では値があるとみなされ、NULLか未定義以外にTrueが返ってくるようになっています。
また、もし以下のように変数を複数指定した場合、1つでも変数にNULLが存在するとisset関数はFALSEを返します。
<?php $value1 = 100; $value2 = 200; $value3 = NULL; if (isset($value1, $value2, $value3)){ echo 'NULL以外です。'; }else{ echo 'NULLです。'; } ?>
実行結果
NULLです。
$value3の値がNULLになっているのでFalseが返ってきたのが分かりますね。isset関数の使い方については以下の記事でも詳しく解説していますので、ぜひ参考にしてください。
3つの関数の結果一覧
3つの関数の実行結果ががどうなるのか、それぞれの値の場合で比べてみました。
頭がごちゃごちゃになってよく分からなくなってしまった時などに、ぜひ利用してくださいね。
変数の値 | is_null | empty | isset |
---|---|---|---|
NULL | TRUE | TRUE | FALSE |
0 | FALSE | TRUE | TRUE |
'0' | FALSE | TRUE | TRUE |
0.0 | FALSE | TRUE | TRUE |
空の文字列 '' | FALSE | TRUE | TRUE |
空白の文字列 ' ' | FALSE | FALSE | TRUE |
False | FALSE | TRUE | TRUE |
文字列の'NULL' | FALSE | FALSE | TRUE |
空の配列 | FALSE | TRUE | TRUE |
配列 | FALSE | FALSE | TRUE |
未定義の変数 | TRUE Undefined variable (エラー) | TRUE | FALSE |
まとめ
ここでは、変数の値がNULLや空かどうか調べるために使用する3つの関数について説明しました。
この記事で紹介したis_null、empty、isset関数は、いずれも変数の値が正常に設定されているか調べたいときに便利ですので、ぜひ覚えておきましょう。もし変数がNULLや空白かを調べる方法を忘れてしまったら、この記事を思い出してくださいね!