在我的代码中,我生成了一个关键数组,其键作为浮点数,但是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
有什么想法吗?
答案 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)
}