empty は、変数が空であるかどうかを検査する。
issetは、var が存在して NULL 以外の値をとれば TRUE、 そうでなければ FALSE を返す。
つまり、issetは空文字列でもTRUEを返します。
<?php $search_array = array('first' => null, 'second' => ''); if(empty($search_array['first'])) print_r("hoge1\n"); if(isset($search_array['first'])) print_r("hoge2\n"); if(empty($search_array['second'])) print_r("fuga1\n"); if(isset($search_array['second'])) print_r("fuga2\n"); if(empty($search_array['third'])) print_r("bar1\n"); if(isset($search_array['third'])) print_r("bar2\n"); ?>
結果
hoge1
fuga1
fuga2
bar1