PHP将数组中的浮点数转换为整数


PHP converting my floats to integers in my array

我有这样的代码:

  $val = (float) $desc;
  if (!isset($runepage['statistics'][$key])) {
        $runepage['statistics'][$key] = (float) 0.0;
  }
  $runepage['statistics'][$key] += $val;

其中$val为浮点数。

但是当我在最后打印出数组时,所有的值最终都是整数。例如,如果相同的$key有1.5,1.5,1.5,它将输出3而不是4.5。

我不知道它为什么这样做。

编辑:这是数组 的输出
[statistics] => Array
    (
        [magic penetration] => 9
        [ability power per level] => 9
        [movement speed] => 3
        [magic resist] => 9
    )

对不起,我误解了你的问题,假设$key是一个浮点数。

$val的情况下-我不知道。它应该可以很好地处理值,所以问题的根源可能在其他地方。在PHP中,整数和浮点数相加是安全的,结果将是浮点数。


如果$key是浮点数:

这是正常的,有记录的行为。数组不应该被浮点数索引。

同样,面向数字的字符串也被强制转换为整数。$a[5] === $a['5'] .

不幸的是,PHP数组不是通用的键值存储。最好的方法是将键序列化为不以数字开头的字符串。