2010-11-14 42 views
2

我不想使用array_merge() ,因为它导致 我误解了所有具有相同键的值都会被覆盖。我有两个数组用数字键组合两个数组而不覆盖旧键

$array1 = array(0=>'foo', 1=>'bar'); 
$array2 = array(0=>'bar', 1=>'foo'); 

,并想将它们组合起来产生这样

array(0=>'foo', 1=>'bar',2=>'bar', 3=>'foo'); 

回答

5

array_merge()追加第二阵列到第一值。它不会覆盖密钥。

你的例子,结果在:

阵列( [0] => FOO [1] =>巴 [2] =>巴 [3] =>富)

但是,If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended.

除非这仅仅是您遇到的另一个问题的示例吗?

+0

哎呦,我只读了手动和MISSE该位,只保留了阅读的东西会覆盖 – Moak 2010-11-14 08:06:32

2

这是否回答你的问题?我不知道究竟要完成什么,但是从你的描述听起来这将工作:

$array1 = array(0=>'foo', 1=>'bar'); 
$array2 = array(0=>'bar', 1=>'foo'); 

foreach ($array2 as $i) { 
    $array1[] = $i; 
} 

echo var_dump($array1); 
1

可能有更好的方法,但怎么样:

$newarray= array(); 
    $array1 = array(0=>'foo', 1=>'bar'); 
    $array2 = array(0=>'bar', 1=>'foo'); 

    $dataarrays = array($array1, $array2); 

    foreach($dataarrays as $dataarray) { 
     foreach($dataarray as $data) { 
      $newarray[] = $data; 
     } 
    } 

print_r($newarray); 
0
$result = array_keys(array_merge(array_flip($array1), array_flip($array2))); 
var_dump($result);