无法在关联数组PHP中使用整数作为键

时间:2015-07-22 18:43:36

标签: php string integer associative-array

我想在关联数组中使用整数作为键。我尝试使用settype()方法将其转换为字符串,然后将其与现有的关联数组合并

以下是代码:

$Xcenter = 325;
$Ycenter = 59.8;

$Xcenter = strval($XCenter);
$existing_array = array('a'=>'b', 'b'=>'c');
$new_array = array($XCenter=>$YCenter);
$result = array_merge($existing_array, $new_array);
print_r($result);

当前输出:

Array ( [a] => b [b] => c [0] => 59.8 ) 

预期产出:

Array ( [a] => b [b] => c [325] => 59.8 ) 

由于某种原因,它不是将整数转换为字符串。但是这对于下面的浮点值非常好:

Array ( [a] => b [b] => c [148.33333333333] => 59.8 )

1 个答案:

答案 0 :(得分:3)

来自array_merge的手册:

  

如果输入数组具有相同的字符串键,则后面的值   该密钥将覆盖前一个密钥。但是,如果是数组   包含数字键,后面的值不会覆盖原始值   值,但会附加。

     

带有数字键的输入数组中的值将重新编号   在结果数组中从零开始递增键。

如果您只想将密钥设置为特定值,则无需进行合并,只需将其设置为$array[123] = $foo即可。或者与$array1 + $array2建立联盟。但只是一个FYI,一个联​​盟不会重新索引数字键,它不会覆盖以前的值。因此,您通常必须反转通常传递给array_merge的参数。因此array_merge($a1, $a2)与没有重新编制索引的数字键的$a2 + $a1几乎相同。