2010-08-03 65 views
8

即时尝试将两个数组合并在一起。都有数字键并且是唯一的。当我使用array_merge,它重新索引从0开始。合并两个数组,同时保持数字键

所以可以说我有

[2] = abc 
[5] = cde 

和我有

[32] = fge 
[13] = def 

我想合并这两个一起保持唯一的密钥。

下面是对当前合并行为的解释..有什么办法可以解决这个问题?

“如果所有数组都只包含数字键,则结果数组会从零开始递增键”。

回答

15

尝试使用+运算符。

$one = array(2 => 'abc', 5 => 'cde'); 
$two = array(32 => 'fge', 13 => 'def'); 
$three = $one + $two; 

$three现在应该是这样的:

[2] = abc 
[5] = cde 
[32] = fge 
[13] = def 
0

试试这个:

$arr1 = array(); 
$arr2 = array(); 
$arrmerge = array(); 
array_push($arr, $arr1, $arr2); 

$ ARR1和$ ARR2将合并,并存储在$ arrmerge。您可以通过foreach访问它。

希望它的作品!

+0

其实也没什么,这会创建一个多维数组'array($ arr1,$ arr2)'。 – deceze 2010-08-03 02:40:50

1
$result = array(2 => 'abc', 5 => 'cde') + array(32 => 'fge', 13 => 'def'); 
print_r($result); 
6

如果要合并与数字键排列,保持键和从第二个项目覆盖从第一数组项:

$a = array(0 => "a", 1 => "b"); 
$b = array(1 => "c", 5 => "d"); 
var_dump(array_diff_key($a, $b) + $b); 

会产生:

array(3) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "c" 
    [5]=> 
    string(1) "d" 
}