我有这段代码:
$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
)
答案 0 :(得分:5)
抱歉,我误解了你的问题,假设$key
是浮动的。
如果是$val
- 我不知道。它应该适用于值,因此问题的根源可能在其他地方。在PHP中,将整数和浮点数一起添加是安全的,结果将是浮点数。
如果$key
是浮点数:
这是正常的documented行为。数组不应该由浮点索引。
同样具有数字的字符串也会转换为整数。 $a[5] === $a['5']
。
不幸的是,PHP数组不是通用的键值存储。您最好的选择是将键序列化为不以数字开头的字符串。