No considero apropiado del todo decir es que debe de usar empty para validar la variable.
Dependerá de como trate los valores que envíe por post.
Si le llega un '0' como cadena y lo pasa por empty le va a dar que el valor está vacío. Y sin embargo puede querer rescartar el valor 0. No deja de ser un número.
Código PHP:
$str='0';
empty($str)?printf('vacio,'):printf('lleno,'); //vacio
$str==""?printf('vacio,'):printf('lleno,'); //lleno
$str=0;
empty($str)?printf('vacio,'):printf('lleno,'); //vacio
$str==""?printf('vacio,'):printf('lleno,'); //vacio
-----------------------------------------------------------------------------------------
Hay que tener en cuenta que empty:
Devuelve FALSE si var tiene un valor no vacío y diferente de cero.
Las siguientes expresiones son consideradas como vacías:
"" (una cadena vacía)
0 (0 como un entero)
0.0 (0 como un real)
"0" (0 como una cadena)
NULL
FALSE
array() (un array vacío)
var $var; (una variable declarada, pero sin un valor en una clase)
-----------------------------------------------------------------------------------------
En cuanto a lo del AND e &&, pueden mirar la tablita que dejó
hgp147 con los operadores lógicos así como la cita que corresponde al manual de php.
http://www.forosdelweb.com/f18/diferencia-entre-548078/