php合并两个数组并保持键不变

时间:2017-07-27
如何在保持字符串/ int键的同时合并两个数组(一个使用string => value对,另一个使用int => value pairs)?它们都不会重叠(因为一个只有字符串而另一个只有整数)

您可以简单地“添加”数组:

>> $a = array(1, 2, 3);
array (
  0 => 1,
  1 => 2,
  2 => 3,
)
>> $b = array("a" => 1, "b" => 2, "c" => 3)
array (
  'a' => 1,
  'b' => 2,
  'c' => 3,
)
>> $a + $b
array (
  0 => 1,
  1 => 2,
  2 => 3,
  'a' => 1,
  'b' => 2,
  'c' => 3,
)

考虑到你有

$replaced = array('1' => 'value1', '4' => 'value4');
$replacement = array('4' => 'value2', '6' => 'value3');

$merge = $replacement + $replaced;会输出:

Array('1' => 'value1', '4' => 'value2', '6' => 'value3');

sum中的第一个数组将在最终输出中包含值。

$merge = $replaced + $replacement;会输出:

Array('1' => 'value1', '4' => 'value4', '6' => 'value3');

虽然这个问题很老,但我只是想在保留密钥的同时增加另一种合并的可能性。

除了使用+符号向现有数组添加键/值之外,您还可以执行此操作array_replace

$a = array('foo' => 'bar', 'some' => 'string');
$b = array(42 => 'answer to the life and everything', 1337 => 'leet');

$merged = array_replace($a, $b);

后一个数组将覆盖相同的键。
还有一个array_replace_recursive,也用于子阵列。