Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数is_nan()为字符串抛出警告_Php_Warnings_Suppress Warnings - Fatal编程技术网

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));
}