PHP函数is_nan()为字符串抛出警告
我一直在使用PHP函数is_nan()为字符串抛出警告,php,warnings,suppress-warnings,Php,Warnings,Suppress Warnings,我一直在使用is_nan()函数(即is-not-a-number)检查从查询字符串中获取的变量是否为数字。但是,如果变量是字符串(在这种情况下,is_nan()应该返回TRUE),函数还会抛出以下相当恼人的警告: Warning: is_nan() expects parameter 1 to be double, string given 既然is_nan()用于检查变量是否不是数字,为什么它会为字符串抛出错误?我认为它应该接受非数值参数,因为这是它的目的 是否有理由发出这样的警告?我在这
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()
,因为我发现它更适合我的目的,所以我不寻找替代品。我只是对这种行为感到好奇。因为在这种情况下,它必须执行隐式强制转换。它应该警告你。我想知道隐式强制转换发生在哪里。它太容易出错 看一下就知道你对的理解是不正确的。我认为您需要使用is_int()
或is_float()
。或者,您可以使用显式转换来转换变量
is_nan()
是一个数学函数,而is_int()
是一个变量处理函数。该函数用于检查数学函数和运算返回值的有效性(请参阅),并期望将浮点作为参数。示例取自:
您可能想要的是:
如果将is_nan()函数包装为条件函数,是否会出现错误,如:
if(is_nan('xxx')) {
echo "Hey, that's no number!";
}
else {
...............
}
:
nan/“不是一个数字”不是用来看的
如果数据类型为
数字/文本/等等
NaN实际上是一组值
可以以浮点形式存储
变量,但不实际评估
一个合适的浮点数
浮点系统有三种类型
节:符号(+/-)的1位,一个
8位指数和23位
分数部分。有规则
控制哪些值的组合
可以放置在每个部分中,并且
有些值是为数字保留的
比如无限。这导致了
某些组合无效,或
换句话说,不是一个数字
检查:
“bool is_nan(float$val)”是的,我就是这样使用它的。是的,我现在使用的是is_int()。看来你是对的。我没有找到函数的PHP文档,谢谢。嗯,我明白了。我更想知道为什么函数只接受“double”类型。对,但这意味着函数是无用的,对吗?我想这就是他的观点。是的,我意识到事实是这样的:错误表明函数只接受“double”或“float”类型。我在问为什么会这样——这有什么意义。见公认的答案。
if (!is_numeric($arbitraryType)) {
if(is_nan('xxx')) {
echo "Hey, that's no number!";
}
else {
...............
}
function is_number($a){
return is_numeric($a) && !is_nan(floatval($a));
}