array_merge奇怪的行为

时间:2012-08-10 08:08:09

标签: php arrays

看看这段代码:

$a = array('1'=>'1');
$b = array(''=>'');

var_dump(array_merge($a,$b));

输出对我来说似乎很奇怪:

array(2) {
  [0] =>
  string(1) "1"
  '' =>
  string(0) ""
}

好的,我已将$a更改为:$a = array('k'=>'v');,输出变得更具可预测性:

array(2) {
  'k' =>
  string(1) "v"
  '' =>
  string(0) ""
}

问题是:为什么在第一个例子中第一个元素的关键是0

修改

var_dump($a);
array(1) {
  [1] =>
  string(1) "1"
}

1 个答案:

答案 0 :(得分:6)

  

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

     

http://php.net/array_merge

是的,在这种情况下,PHP的特殊性是将数字字符串值视为数值。您可能希望改为使用$a + $b