1

看看这段代码:

$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"
}
4

1 回答 1

6

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

http://php.net/array_merge

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

于 2012-08-10T08:11:07.273 回答