emptyは変数が空かどうかを調べ、
issetは変数に値がセットされているかどうかを調べる。
<?php $array = array( "" => ""); if(empty($array)) print_r("ほげ" . "\n"); if(isset($array)) print_r("homu" . "\n"); $array = array( "hoge" => ""); if(empty($array)) print_r("ほげ1" . "\n"); if(empty($array['hoge'])) print_r("ほげ1" . "\n"); if(isset($array)) print_r("homu1" . "\n"); $array = array(); if(empty($array)) print_r("ほげ2" . "\n"); if(isset($array)) print_r("homu2" . "\n"); ?>
homu
ほげ1
homu1
ほげ2
homu2
連想配列の場合、キーも値も定義されていなくてもemptyはfalseになる。
一方issetは変数そのものが定義されているからtrueとなる。