El operador ‘!=’ confunde los ceros con false. En casos como este debemos usar ‘!==’:
function numero($valor)
{
if (is_numeric($valor)) {
return $valor;
}
return false;
}
$elNumero = "0";
var_dump(numero($elNumero));
if (numero($elNumero)!==false) {
echo "Usando === nos dice que es un número.\n";
}
if (numero($elNumero)!=false) {
echo "Usando == nos dice que es un número.\n";
}
- Con $elNumero = 1; funciona correctamente.
- Con $elNumero = 0; el operador ‘!=» da un resultado erróneo.
La razón es que ‘!=’ confunde el número 0 con false.