【PHP】isset()とempty()の挙動まとめ。

自分用。

以下の変数を用いて実験。
※$hは未定義とする

$a = null;
$b = 0;
$c = '0';
$d = array();
$e = '';
$f = true;
$g = false;
// $h

まずはisset()。

var_dump(isset($a));
var_dump(isset($b));
var_dump(isset($c));
var_dump(isset($d));
var_dump(isset($e));
var_dump(isset($f));
var_dump(isset($g));
var_dump(isset($h));
↓
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)

isset()は「null」、「未定義」の場合のみ「false」。

次にempty()。

var_dump(empty($a));
var_dump(empty($b));
var_dump(empty($c));
var_dump(empty($d));
var_dump(empty($e));
var_dump(empty($f));
var_dump(empty($g));
var_dump(empty($h));		
↓
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
bool(true)

empty()は「true」の場合のみ「false」を返却という結果に。

ということで結果を表にまとめてみた。

isset() empty()
null bool(false) bool(true)
0 bool(true) bool(true)
‘0’ bool(true) bool(true)
array() bool(true) bool(true)
bool(true) bool(true)
true bool(true) bool(false)
false bool(true) bool(true)
未定義 bool(false) bool(true)

変数未定義のempty()もエラー吐かずにtrue返してくれるのね。ためになっt(ry