PHPのisset・empty・is_nullの違いを理解しよう

プログラミング 公開日:
ブックマーク
PHPのisset・empty・is_nullの違いを理解しよう
PHPのisset・empty・is_nullの違いについて解説しています。使う機会が多い関数である一方で、ベテランエンジニアの方でもうっかり間違えて使ってしまうことのある関数でもあります。本記事では、それぞれの関数の比較から解説まで行います。

はじめに

PHPには、変数の状態を確認するための関数がいくつかありますが、その代表的な関数としてisset・empty・is_nullがあります。これらの関数は似ているようで、実はそれぞれ異なる挙動をします。

まずそれぞれの関数の比較表をご紹介した後、それぞれの関数について詳しく解説します。

isset・empty・is_nullの比較表

isset・empty・is_null、それぞれの関数に該当の値をセットすると、次の結果が返却されます。

isset empty is_null if ($var)
$var = 1 int true false false true
$var = "1" string true false false true
$var = "" string true true false false
$var(未定義) NULL false true true false
$var = 0 int true true false false
$var = null NULL false true true false
$var = [ ] array true true false false
$var = ['a', 'b'] array true false false true

それぞれの関数の挙動

それでは関数ごとに詳しくみてみましょう。

isset

isset関数は、変数がセット(宣言)されていて、かつNULLでない場合にtrueを返します。

ポイントは、「変数がセット(宣言)されている」かどうかです。

例えば、$varが未定義の場合、

// $varが未定義
var_dump(isset($var));   // false

変数がセットされていないので、falseが返却されます。

またnullがセットされている場合、

$var = null;
var_dump(isset($var));   // false

同じくfalseが返却され、これ以外はtrueが返却されます。

empty

empty関数は、変数が空であるかどうかを確認します。変数がnull、0、空文字、空配列などの場合にtrueとなります。

ポイントは、「変数が空であるか」どうかです。

empty関数でtrueになる例を見てみましょう。

$var = '';
var_dump(empty($var));   // true

$var = 0;
var_dump(empty($var));   // true

$var = null;
var_dump(empty($var));   // true

$var = [];
var_dump(empty($var));   // true

// $var2が未定義
var_dump(empty($var2));   // true

上記以外の場合は、falseが返却されます。

is_null

is_null関数は、変数がnullである場合にtrueを返します。

ポイントは、その名の通り、「nullであるか(もしくは未定義か)」どうかです。

$var = null;
var_dump(is_null($var));   // true

// $var2が未定義
var_dump(empty($var2));   // true

上記以外の場合は、falseが返却されます。

注意点(未定義の変数)

最後にもう一歩踏み込んで、未定義の変数を扱う際の注意点をお伝えします。

上記の比較表を見ると、issetとis_nullは正反対の判定をしているように見えます。
しかし、is_nullは未定義の変数に対して使用すると、前述した通りtrueを返却すると同時に、Warningが発生します。

ですので、isset = !is_nullと思い、is_nullを使って判定を書いてしまうと、意図せずWarningを発生させてしまうことになるので、注意が必要です。

// $varが未定義
var_dump(isset($var));   // false
var_dump(!is_null($var));   // false + $varが未定義のため、Warningが発生する

おわりに

isset・empty・is_nullは間違いやすい関数ではありますが、よく使う関数でもあります。
その特性をよく理解して、適切に使用できるようにしましょう。

TECH PLAYでは、ITに関わる様々なイベント・勉強会・講演会・交流会・カンファレンス・セミナーなどの情報を集約し掲載しています。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす