PHPでよく使うisset,emptyなどの違いについて

投稿日: カテゴリー ITよろず タグ

PHPは他のプログラミング言語と同じく変数を使っていろんな処理を記載します。私はアセンブラ,C/C++やJavaからはじめてこの世界に入ってまして、変数の型宣言は当然の如く認識していました。ところがPHPや他のスクリプト言語では変数の型宣言は特にせず処理を書いていきます。UNIXを扱っている時は作業効率を上げるのに簡単なスクリプトを書いたりしてましたが、変数は文字列しか扱わず型を意識しないで値を確認する処理などは書いてませんでした。PHPでコーディングし始めて変数値の確認処理を書き始めると、同じような処理でも書き方や関数によって結果が違うことに混乱しました。
処理を書く度にグーグってましたがこの機会に整理しておきます。

・isset

変数がセットされていてNULLでないことを調べます。ポイントは変数に0がセットされていてもtrueを返します。0はNULLではありません。また、空の文字列”や’0’もtrueを返します。

・empty

変数が空であるかどうかを調べます。ポイントは変数に文字列の’0’がセットされていてもtrueを返します。つまりemptyはissetの「逆の処理ではない」ということです。emptyの逆の処理となるのは、変数をif文で直接確認する場合if($var)となります。なので、!emptyとif($var)は同じ結果を返します。
以下は処理結果を表にまとめたものです。

引用:http://d.hatena.ne.jp/sngmr/20080209/1202520832

if($var) isset empty is_null
$var=1 true true false false
$var=””; false true true false
$var=”0″; false true true false
$var=0; false true true false
$var=NULL; false false true true
$var false false true true
$var=array() false true true false
$var=array(1) true true false false