PHP is_NaN()没有返回任何内容

时间:2014-12-28 06:52:53

标签: php

似乎PHP is_NaN()函数没有返回任何内容(不返回truefalse)。以下是未返回任何内容的代码:

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

它也不会触发if语句。我正在使用PHP5。有没有人知道解决方法或解决这个问题的方法?感谢。

2 个答案:

答案 0 :(得分:2)

我认为您可能会将is_nan!is_numeric混为一谈。

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因为参数不是float类型。所以听起来你正在寻找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)

答案 1 :(得分:1)

is_nan()不会检查变量的数据类型是否为数字。有一种名为not a numberNaN的东西告诉我们这个数字不是可表示的形式。 is_nan()函数检查数字是否为NaN。

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

如下所示:

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