2013-03-20 16 views
0

我有这样的代码:PHP转换我的花车为整数在我的数组

$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

向我们展示执行打印的代码 – 2013-03-20 23:31:37

+0

我看不到任何正在进行的整型转换。你会添加如何打印阵列? – halfer 2013-03-20 23:32:20

+0

顺便说一下,你不必做'(float)0.0' - 这里的零就足够了,它仍然会被当作float。 – halfer 2013-03-20 23:33:16

回答

5

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

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


如果$key是一个浮动:

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

数字外观字符串也转换为整数。 $a[5] === $a['5']

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

+1

他从来没有说过$ key vas float – Acuao 2013-03-20 23:37:06

+1

@Acuao - 他在他的问题的倒数第二段中明确地说过:'但是当我在最后打印数组时,所有的键都以整数形式结束' – 2013-03-20 23:42:25

+0

这是$ val是一个浮点数,关键是一个字符串。我已经将数组的输出添加到了初始文章中。 – Anujan 2013-03-20 23:42:44