PHP函数is_nan()为字符串抛出警告

Sam*_*hke 4 php warnings suppress-warnings

我一直在使用is_nan()函数(即is-not-a-number)来检查从查询字符串中获取的变量是否为数字.但是,如果变量是一个字符串(在这种情况下is_nan()应该返回TRUE),该函数还会抛出以下相当烦人的警告:

Warning: is_nan() expects parameter 1 to be double, string given
Run Code Online (Sandbox Code Playgroud)

既然is_nan()是为了检查变量是不是数字,为什么会为字符串抛出错误?我本以为它应该接受非数字参数,因为它的目的是......

是否有理由抛出这样的警告?有什么感觉,我没有在这里看到?

注意:抛出错误时,函数仍然按预期运行 - 对于字符串返回TRUE,对于数字返回FALSE.但是,我想知道为什么它会在字符串的情况下发出警告.
我也开始使用,is_int()因为我发现它更适合我的目的,所以我不寻找替代品.我只是对这种行为感到好奇.

sou*_*rge 15

该函数用于检查数学函数和运算的返回值的有效性(参见NaN @维基百科)并期望将float作为参数.从函数文档中获取的示例:

$nan = acos(8);
var_dump($nan, is_nan($nan));

# prints:
float(NAN)
bool(true)
Run Code Online (Sandbox Code Playgroud)

你可能想要的是is_numeric():

if (!is_numeric($arbitraryType)) {
Run Code Online (Sandbox Code Playgroud)