empty - проверяет переменную на пустоту, так же, вернет true если переменной не существует.
с помощью знака ! перед переменной, проверяется ее противоположное значение, приведенное в boolean тип. если переменной не существует, на сколько я предполагаю, это приведет к ошибке. обычно использую empty