Añado esto a lo que dijo @Sourcegeek cuando empty considera una variable "vacía"
Cita: Las siguientes expresiones son consideradas como vacías:
"" (una cadena vacía)
0 (0 como un integer)
0.0 (0 como un float)
"0" (0 como un string)
NULL
FALSE
array() (un array vacío)
var $var; (una variable declarada, pero sin un valor en una clase)
Saludos.