合并两个数组

2022-08-30 07:36:16

我有两个这样的数组:

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 ) );

任何解决方案?


答案 1

只需使用:

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

这应该可以解决这个问题。由于如果一个键多次出现,则使用字符串键(如示例中所示),因此一个键将覆盖具有相同名称的前面键。因为在您的情况下,它们都具有相同的值,这无关紧要,并且还会删除重复项。'44'

更新:我刚刚意识到,PHP将数字字符串键视为数字(整数),因此会像这样表现,这意味着,它也重新编号了键...

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

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

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

$output = $array1 + $array2;

所有这些都可以在以下位置看到:http://php.net/manual/en/function.array-merge.php


答案 2

您应该考虑到$array1 + $array2 != $array2 + $array1

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

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

$array 1 + $array 2

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

$array 2 + $array 1

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