isset vracia true prave vtedy, ked dana premenna existuje. empty vracia true vtedy, ked premenna neexistuje alebo existuje a je prazdna. Napr.
Kód:
$foo = array();
$bar = '';
var_dump( isset($foo) ); //true, premenna $foo existuje
var_dump( isset($bar) ); //true, premenna $bar existuje
var_dump( isset($baz) ); //false, premenna $baz existuje
var_dump( empty($foo) ); //true, premenna $foo je prazdne pole
var_dump( empty($bar) ); //true, premenna $bar je prazdny retazec
var_dump( empty($baz) ); //true, premenna $baz neexistuje, teda je vlastne prazdna
A znak ! proste neguje. Z true spravi false a naopak.
Pre kontrolu napriklad, ci bol formular odoslany, odporucam if (!empty($_POST)) - totiz isset($_POST) by vratilo true, aj keby nebolo nic odoslane. Zasa napriklad pre kontrolu, ci premenna existuje, odporucam isset.