最終更新日:
公開日:
レシピ
変数
変数に値がセットされているか/存在するかを確認する
変数に値がセットされているか、そもそも変数が存在するかを含めて確認する方法を解説します。
この記事のポイント
- 変数が存在するかを含めて確認したいときはempty関数を使用する
- 存在する変数に対して値が入ってるか確認したいときはisset関数を使用する
目次
変数に値が入っているか、そもそも変数が存在するか確認
コードの中で、変数にしっかり意図した値がセットされているかを確認したいときがあります。
存在しない変数を参照するとエラーになってしまうことから、そもそも変数の存在自体から確認したいこともあります。
例えば次のようなケースが考えられます。
- 変数に値が入っているかを確認したい。
- 変数の値がnullでないかを確認したい。
- そもそも変数が存在するかを含めて確認したい。
以上のことを確認するために、PHPが標準で用意しているisset関数とempty関数を使って確認していきます。
変数に値がセットされているかを確認する「isset関数」
isset関数は変数が存在していて、かつ値にnull以外がセットされていたらtrueを返します。
それ以外の場合は全てfalse。
いくつかの変数を使ってisset関数を実行してみましょう。
変数$fはあえて初期化をせず、関数の中でいきなり呼び出しています。
isset関数の使用例
<?php
// 変数の初期化
$a = null;
$b = 1;
$c = "GRAYCODE";
$d = "";
$e = array();
// $f は初期化せずにisset関数で参照する
var_dump(isset($a)); // false
var_dump(isset($b)); // true
var_dump(isset($c)); // true
var_dump(isset($d)); // true
var_dump(isset($e)); // true
var_dump(isset($f)); // false
変数が存在していて、かつ値がセットされている場合のみtrueとなっていることが確認できました。
$dの空文字列や$eの空配列も空のようなものなのでfalseになるかと思いきや、ここはtrueになっています。
nullでなければ、とりあえず値は入っているという判断になるようです。
変数の存在から確認する「empty関数」
empty関数は変数が存在しない場合、または値が空かnullがセットされている場合にtrueを返します。
isset関数とは対象的のような関数。
こちらも先ほどの変数を使って、結果を出力してみましょう。
empty関数の使用例
<?php
// 変数の初期化
$a = null;
$b = 1;
$c = "GRAYCODE";
$d = "";
$e = array();
// $f は初期化せずにempty関数で参照する
var_dump(empty($a)); // true
var_dump(empty($b)); // false
var_dump(empty($c)); // false
var_dump(empty($d)); // true
var_dump(empty($e)); // true
var_dump(empty($f)); // true
$bと$cのように値が入っている場合はfalseとなりましたが、それ以外は全てtrueとなりました。
empty関数の前に論理演算子の否定「!」を付ければ、変数が「空」じゃないかを判断する用途として使うことができます。
否定「!」をつけた実行例
<?php
// 変数の初期化
$a = null;
$b = 1;
$c = "GRAYCODE";
$d = "";
$e = array();
// $f は初期化せずにempty関数で参照する
var_dump(!empty($a)); // false
var_dump(!empty($b)); // true
var_dump(!empty($c)); // true
var_dump(!empty($d)); // false
var_dump(!empty($e)); // false
var_dump(!empty($f)); // false
空文字列や空配列についてもfalseとなっていますね。
isset関数よりも厳密に、変数が空であるかを確認できていることが分かります。
isset関数とempty関数の使い分け
上記のコードの結果から、変数の「空」の状態をどこまで厳密に判断したいかによって、どちらの関数を使うべきかが決まります。
例えば変数が存在しない可能性、null以外の空文字列や空配列が入る可能性があり、そのあたりも「空」として判断したいのであればempty関数を使った方が意図した結果となります。
一方で、変数の値がnullじゃないかを確認できれば大丈夫、という場合であればisset関数でも十分でしょう。
実際にシステム構築していると、論理演算子の否定「!」とempty関数の組み合わせを使うシーンの方が多いです。
以上、変数に値がセットされているかどうかを確認する方法についてでした。