我已经在PHP is_numeric中的NAN常量和给定的结果中测试了函数
is_numeric(NAN); // TRUE
Run Code Online (Sandbox Code Playgroud)
但NAN的意思是"非数字".为什么函数is_numeric返回true?
我知道NAN是一种float类型.但在测试下面两种情况时,结果是不同的:
is_float(NAN) // true
filter_var(NAN, FILTER_VALIDATE_FLOAT)// false
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
对不起,我的英语不好
NAN是一个特殊的常数。它必须保存一些值,因此它保存一个float 数据类型
var_dump(NAN); // float(NAN);
Run Code Online (Sandbox Code Playgroud)
问题在于,filter_var不是比较数据类型,而是寻找数字,而数字NAN 不是。
某些数字运算可能会产生由常量 NAN 表示的值。此结果表示浮点计算中未定义或无法表示的值。该值与任何其他值(包括其本身)的任何松散或严格比较都将得到 FALSE 结果。
由于 NAN 表示任意数量的不同值,因此 NAN 不应与其他值(包括其自身)进行比较,而应使用 is_nan() 检查。