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

时间:2013-03-20 23:30:09

标签: php arrays integer rounding

我有这段代码:

  $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
    )

1 个答案:

答案 0 :(得分:5)

抱歉,我误解了你的问题,假设$key是浮动的。

如果是$val - 我不知道。它应该适用于值,因此问题的根源可能在其他地方。在PHP中,将整数和浮点数一起添加是安全的,结果将是浮点数。


如果$key是浮点数:

这是正常的documented行为。数组不应该由浮点索引。

同样具有数字的字符串也会转换为整数。 $a[5] === $a['5']

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