La función empty() devuelve TRUE si el valor es cero, eso lo dice bien claro el manual, ¿por qué no has revisado primero?
Lo lógico sería, comprobar la existencia de la variable y luego un valor "aceptable", es decir:
Aquí es mejor usar isset() para verificar la existencia de la variable, pues aunque empty() también hace lo mismo además compara el valor dando falsos positivos.
Por eso la comparación adicional, para descartar falsos positivos.
Procura pensar dos veces lo que haces, lo único que hiciste mal es pensar muy poco antes de pedir ayuda, ejercita más tu mente para la próxima.
Ah, y no olvides consultar el manual.