我一直在使用 is_nan()
函数(即is-not-a-number)来检查从查询字符串中取出的变量是否为数字 . 但是,如果变量是一个字符串(在这种情况下 is_nan()
应返回 TRUE
),该函数还会抛出以下相当烦人的警告:
Warning: is_nan() expects parameter 1 to be double, string given
由于 is_nan()
用于检查变量是否不是数字,为什么会为字符串抛出错误?我本以为它应该接受非数字参数,因为它的目的是......
是否有理由抛出这样的警告?有什么感觉,我没有在这里看到?
注意:抛出错误时,函数仍然按预期运行 - 对于字符串返回TRUE,对于数字返回FALSE . 但是,我想知道为什么它会在字符串的情况下发出警告 .
我也开始使用 is_int()
因为我发现它更适合我的目的,所以我不寻找替代品 . 我只是对这种行为感到好奇 .
7 回答
该函数用于检查数学函数和运算的返回值的有效性(参见NaN@wikipedia),并期望将float作为参数 . 取自function's documentation的示例:
你可能想要的是is_numeric():
From here :
看一下documentation表明您对
is_nan()
的理解不正确 . 我想你需要使用is_int()
或is_float()
. 或者,您可以使用explict强制转换来转换您的变量 .is_nan()
是数学函数,而is_int()
是变量处理函数 .因为在这种情况下它必须执行隐式转换 . 它应该警告你 . 我想知道隐式转换发生在哪里 . 它太容易出错 .
检查:http://se2.php.net/manual/en/function.is-nan.php
“bool is_nan(float $ val)”< - 这就是原因 .
如果将is_nan()函数包装在条件中,是否会出现错误,例如: