关联数组键转换浮点字符串

时间:2013-06-20 13:55:45

标签: php casting associative-array

在我的代码中,我生成了一个关键数组,其键作为浮点数,但是PHP文档声明当它们成为数组中的键时,它们被强制转换为整数。相反,他们被强制转换为字符串(这对我来说实际上更好,所以我不抱怨)。

问题在于,当我尝试使用float作为键值来访问这些键时,它只将带有.5的浮点数转换为整数,并在数组中创建一个新条目。似乎是特殊的行为。

示例:

var_dump( $array );

输出:

array(9) {
[0] =>
int(0)
[1.25] =>
int(0)
[2.5] =>
int(0)
....}

当我尝试像这样访问值2.5时,

array[2.5]++;

数组中的新条目是array[2] 但是,如果我尝试在array[1.25]++;访问数组 我成功地将密钥值加1:1.25

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我会一直坚持使用字符串:

$a = array(
    '0' => 0,
    '1.25' => 0,
    '2.5' => 0
);

$a['2.5']++;
echo $a['2.5'] . "\n";
var_dump($a);

输出是:

1
array(3) {
  [0]=>
  int(0)
  ["1.25"]=>
  int(0)
  ["2.5"]=>
  int(1)
}