2014-12-28 88 views
0

似乎PHP is_NaN()函数没有返回任何东西(不返回truefalse)。这里是它没有返回任何东西的代码:PHP is_NaN()不返回任何东西

$id = 111; 
$booltest = is_nan($id); 
if ($booltest) { 
echo 'Invalid ID: "' . $id . '"'; 
exit(); 
} 

它不会触发if语句。我正在使用PHP5。有谁知道解决此问题的方法或方法?谢谢。

+4

这段代码的预期结果是结束静默,因为is_nan返回该实例假的。 – JAL

+0

尝试更改为'$ id = NAN' –

+0

该函数只在设置为字符串时返回编译器警告,而不是自定义错误。 – CosineWaves

回答

1

is_nan()不检查变量的数据类型是否是数字。有一种叫not a numberNaN,它告诉我们该号码不是可表示的形式。 is_nan()函数检查数字是否为NaN。

如果你想检查整数,你可以使用is_int()

象下面这样:

$id = 111; 
$booltest = is_int($id); 
if ($booltest) { 
echo 'Invalid ID: "' . $id . '"'; 
exit(); 
} 
1

我想你可能会被!is_numeric混为一谈is_nan

NaN(“不是数字”)是一个特定的浮点值,表示某些不能用实数表示的数学结果。例如,负数的平方根:

$x = sqrt(-1); 
var_dump($x); 
var_dump(is_nan($x)); 
var_dump(is_numeric($x)); 

输出:

float(NAN) 
bool(true) 
bool(true) 

is_nan仅测试飘浮并仅返回true为特定浮点值的NaN。如果你给它,比如一个字符串,它将返回null,因为参数不是浮点类型。所以,它听起来就像你正在寻找替代is_numeric

$x = "asdf"; 
var_dump(is_nan($x)); 
var_dump(is_numeric($x)); 
$y = 111; 
var_dump(is_nan($y)); 
var_dump(is_numeric($y)); 

输出:

NULL 
bool(false) 
bool(false) 
bool(true)