【发布时间】:2015-07-22 18:43:36
【问题描述】:
我想在关联数组中使用整数作为键。我尝试使用 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 )
【问题讨论】:
-
来自哪里:
$YCenter来自哪里?也只需删除您的 settype 调用! -
用
$Xcenter = "325"代替settype()怎么样? -
$existing_array[$Xcenter] = 'something';array_merge会重新索引数字键,这就是你得到 0 的原因。 -
根据docs、
Don't forget that numeric keys will be renumbered。如果你强制325成为一个字符串也没关系,它仍然会通过 is_numeric() 并最终被视为一个数字。请改用$result = $old_array + $new_array。 -
@Rizier123 你的问题对我来说意义不大,因为 YCenter 是一个值,它与键的索引方式无关。我已将 settype() 替换为 strval
标签: php string integer associative-array