我偶然发现了不正常的PHP行为。
首先让我说这纯粹是一种兴趣,而且从未打算用于制作
$my_array = array(NAN => "one", INF => "two");
print_r($my_array);
结果是
Array
(
[-2147483648] => one
[0] => two
)
可以请任何人解释我是怎么来的
它们不会生成警告(特别是INF转换为0,如果有的话,用相同的键覆盖其他值)
为什么NAN在64位上投射到-9,223,372,036,854,775,808,在32位机器上投射-2,147,483,648(你可以得到最低的长度)
INF默默地变为零
我可以看到NAN和INF成为那些数字,如果转换为int,但是如果NAN将转换为0并且INF将最大正数而不是更合乎逻辑?
答案 0 :(得分:0)
如PHP手册和此答案Working with an array with periods in key values
所述,浮点数被截断为整数INF转换为0的原因对我来说仍然很奇怪。