我有这样的代码:
$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数组不是通用的键值存储。最好的方法是将键序列化为不以数字开头的字符串。