2010-08-03 64 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" 
}