我想在关联数组中使用整数作为键。我尝试使用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 )
答案 0 :(得分:3)
来自array_merge的手册:
如果输入数组具有相同的字符串键,则后面的值 该密钥将覆盖前一个密钥。但是,如果是数组 包含数字键,后面的值不会覆盖原始值 值,但会附加。
带有数字键的输入数组中的值将重新编号 在结果数组中从零开始递增键。
如果您只想将密钥设置为特定值,则无需进行合并,只需将其设置为$array[123] = $foo
即可。或者与$array1 + $array2
建立联盟。但只是一个FYI,一个联盟不会重新索引数字键,它不会覆盖以前的值。因此,您通常必须反转通常传递给array_merge的参数。因此array_merge($a1, $a2)
与没有重新编制索引的数字键的$a2 + $a1
几乎相同。