结合两个数组

我有两个这样的数组:

array( '11' => '11', '22' => '22', '33' => '33', '44' => '44' ); array( '44' => '44', '55' => '55', '66' => '66', '77' => '77' ); 

我想结合这两个数组,使它不包含重复,以及保持原来的关键。 例如输出应该是:

 array( '11' => '11', '22' => '22', '33' => '33', '44' => '44', '55' => '55', '66' => '66', '77' => '77' ); 

我已经尝试过,但它正在改变它们的原始键:

 $output = array_unique( array_merge( $array1 , $array2 ) ); 

任何解决scheme

谢谢

只要使用:

 $output = array_merge($array1, $array2); 

这应该解决它。 因为如果一个键出现多次(如你的例子中的'44' ,你使用了string键,一个键将会覆盖同名的前面的键。 因为在你的情况下,他们都有相同的价值无论如何不重要,它也将删除重复。

更新:我只是意识到,PHP把数字string键作为数字(整数),所以会像这样的行为,也就是说,它也重新键的键…

解决方法是重新创build密钥。

 $output = array_combine($output, $output); 

更新2:我总是忘记,还有一个操作符(粗体,因为这真的是你要找的!:D)

 $output = $array1 + $array2; 

https://ideone.com/Jqhbk

这工作:

 $output = $array1 + $array2; 

你应该考虑$array1 + $array2 != $array2 + $array1

 $array1 = array( '11' => 'x1', '22' => 'x1' ); $array2 = array( '22' => 'x2', '33' => 'x2' ); 

$ array1 + $ array2

 $array1 + $array2 = array( '11' => 'x1', '22' => 'x1', '33' => 'x2' ); 

$ array2 + $ array1

 $array2 + $array1 = array( '11' => 'x1', '22' => 'x2', '33' => 'x2' ); 

要做到这一点,你可以循环一个,并追加到另一个:

 <?php $test1 = array( '11' => '11', '22' => '22', '33' => '33', '44' => '44' ); $test2 = array( '44' => '44', '55' => '55', '66' => '66', '77' => '77' ); function combineWithKeys($array1, $array2) { foreach($array1 as $key=>$value) $array2[$key] = $value; asort($array2); return $array2; } print_r(combineWithKeys($test1, $test2)); ?> 

更新: KingCrunch提出了最好的解决scheme : print_r($array1+$array2);

这工作:

 $a = array(1 => 1, 2 => 2, 3 => 3); $b = array(4 => 4, 5 => 5, 6 => 6); $c = $a + $b; print_r($c);