INF和NAN作为数组索引

时间:2014-09-03 12:40:12

标签: php

我偶然发现了不正常的PHP行为。

首先让我说这纯粹是一种兴趣,而且从未打算用于制作

$my_array = array(NAN => "one", INF => "two");

print_r($my_array);

结果是

Array
(
    [-2147483648] => one
    [0] => two
)

可以请任何人解释我是怎么来的

  • 它们不会生成警告(特别是INF转换为0,如果有的话,用相同的键覆盖其他值)

  • 为什么NA​​N在64位上投射到-9,223,372,036,854,775,808,在32位机器上投射-2,147,483,648(你可以得到最低的长度)

  • INF默默地变为零

我可以看到NAN和INF成为那些数字,如果转换为int,但是如果NAN将转换为0并且INF将最大正数而不是更合乎逻辑?

1 个答案:

答案 0 :(得分:0)

如PHP手册和此答案Working with an array with periods in key values

所述,浮点数被截断为整数

INF转换为0的原因对我来说仍然很奇怪。