Начну с различия между isset и empty.
isset - проверяет на существование переменной или индекса в массиве, т.е она будет
ВСЕГДА true, если значение отлично от
NULL, именно от константы
null, т.е '', 0, "\0" и т.д, будет считаться существующей переменой,
false будет только при присвоение ей null или unset($var), во всех остальных
trueempty - проверят именно на пустоту переменной, т.е возвращает
true если переменная является пустой и
false в противоположном случаи.
В PHP пустотой считаются следующие значения:- ""
- 0
- 0.0
- "0"
- null
- false
- array() (пустой массив)
- $var; (переменная объявлена, но не имеет значения)
Что касается проверки на пустоту и как ее правильно делать, то это исходит от Вашей задачи, и что должно для Вас является пустотой, но в большинстве случаем подойдет такая проверка:
if(isset($var) && $var !== '') {
// $var не null и не ''.
}
Еще больше поможет разобраться в сравнение типов, это
таблица сравнение типов PHP