nan()会为字符串发出警告
我一直在使用is_nan()
函数(即不是一个数字)来检查从查询字符串中获取的变量是否是数字。 但是,在变量是一个字符串的情况下(在这种情况下, is_nan()
应该返回TRUE
),该函数也会引发以下相当恼人的警告:
Warning: is_nan() expects parameter 1 to be double, string given
由于is_nan()
用于检查变量是否不是数字,为什么它会为字符串引发错误? 我会认为它应该接受非数字参数,因为这是种类 - 它的目的...
为什么会有这样的警告会被抛出? 有没有我在这里看不到的感觉?
注意:当引发错误时,函数仍然按预期行事 - 它对字符串返回TRUE,对数字返回FALSE。 但是,我想知道为什么它会在字符串的情况下发出警告。
我也开始使用is_int()
因为我发现它更适合我的目的,所以我不寻找替代品。 我只是好奇这种行为。
该函数旨在检查数学函数和操作的返回值的有效性(请参阅NaN @ wikipedia),并且需要将浮点数作为参数。 从函数文档中取得的例子:
$nan = acos(8);
var_dump($nan, is_nan($nan));
# prints:
float(NAN)
bool(true)
你可能想要的是is_numeric()
:
if (!is_numeric($arbitraryType)) {
从这里开始 :
nan /“不是数字”并不意味着查看数据类型是数字/文本/等等。
NaN实际上是一组可以存储在浮点变量中的值,但实际上并没有计算出适当的浮点数。
浮点系统有三个部分:1位为符号(+/-),8位指数和23位小数部分。 有规则可以规定哪些组合值可以放入每个部分,并且某些值保留用于无穷大等数字。 这导致某些组合无效,换句话说,不是一个数字。
看文档表明你对is_nan()
理解是不正确的。 我认为你需要使用is_int()
或is_float()
。 或者,你可以使用一个表达式来转换你的变量。
is_nan()
是一个数学函数,而is_int()
是一个变量处理函数。