结合两个数组
我有两个这样的数组:
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; 
这工作:
 $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);