Seguro que esto ya lo sabes porque es de 1º de PHP pero nunca está de más recordarlo. En PHP hay que tener cuidado al comparar dos valores cuando uno de ellos es una cadena:
function esCero($valor) {
echo "$valor == 0 -> " . ( $valor == 0 ? 'true' : 'false' ) . PHP_EOL;
}
esCero(123);
esCero('123');
esCero('123Z');
esCero('Z123');
Los resultados serán:
123 == 0 -> false 123 == 0 -> false 123Z == 0 -> false Z123 == 0 -> true
Los tres primeros devuelven false porque el valor se puede convertir en un número distinto de cero. En el último caso es una cadena no convertible en número, por lo tanto se convierte en un cero.