2012-03-12 165 views
3

結合兩個不相等的陣列我想這兩個陣列組合成以下一個。更具體地說,我想將第二個數組的內容添加到第一個數組中的匹配鍵。最終數組中的鍵應該具有兩個數組的匹配鍵的內容。通過匹配的密鑰

Array ( 
[123456789_404045862944400] => 192 
[123456789_403274909688162] => 186 
[123456789_402735273075459] => 311 
[123456789_252948031457462] => 385 
[123456789_400606749954978] => 287 
[123456789_286755318061725] => 358 
[123456789_399687880046865] => 257 
[123456789_398332190182434] => 240 
[123456789_397768486905471] => 311 
[123456789_396907650324888] => 293 
[123456789_394850557197264] => 496 
[123456789_394121230603530] => 475 
[123456789_369757766367627] => 488 
[123456789_391602517522068] => 506 
[123456789_390848830930770] => 437 
[123456789_389975351018118] => 452 
[123456789_242486689170043] => 525 
[123456789_388151047867215] => 415 
[123456789_387476447934675] => 502 
[123456789_386620518020268] => 467 
[123456789_215937481836499] => 359 
) 

Array (
[123456789_404045862944400] => 23:52 
[123456789_403274909688162] => 22:21 
[123456789_402735273075459] => 04:29 
[123456789_252948031457462] => 06:22 
[123456789_400606749954978] => 05:01 
[123456789_286755318061725] => 04:51 
[123456789_399687880046865] => 21:51 
[123456789_398395260176127] => 01:13 
[123456789_398332190182434] => 23:19 
[123456789_397768486905471] => 05:38 
[123456789_397509266931393] => 00:46 
[123456789_396907650324888] => 03:38 
[123456789_394850557197264] => 05:12 
[123456789_394121230603530] => 04:15 
[123456789_369757766367627] => 04:01 
[123456789_391602517522068] => 03:44 
[123456789_390848830930770] => 06:05 
[123456789_389975351018118] => 04:00 
[123456789_242486689170043] => 04:13 
[123456789_388151047867215] => 00:22 
[123456789_387544787927841] => 07:34 
[123456789_387476447934675] => 04:51 
[123456789_386620518020268] => 06:05 
[123456789_386504878031832] => 02:38 
[123456789_215937481836499] => 01:10 
) 

我試過到目前爲止:

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

也試過類似:

foreach($arr2 as $k=>$v) { 
    $a[$k] = $arr1[$k]; 
} 

但它不合並/合併陣列正確地匹配的密鑰。

我也試過array_combine,但由於它通過使用一個數組作爲鍵和另一個數組創建了一個數組,所以我無法讓它工作。

+0

能否請您在此提供樣品輸出數組? – 2012-03-12 23:26:43

+0

有什麼條件?看起來你正在這裏按時運作。如果我添加並超過了'23:59',會發生什麼?都是數組總是相等的,還是有可能一個數組比另一個有更多的項目?兩個數組是否都包含相同的項目,或者是否有一個項目在一個數組中而不是另一個? – Joseph 2012-03-12 23:27:55

+0

嗨@Teez,array_merge輸出一個數組,它是兩者的簡單組合。 foreach方法輸出一個空值的數組,並且arr1沒有值。 array_combine給出了「兩個參數應該有相同數量的元素......」的錯誤。 – 2012-03-12 23:35:38

回答

6

好了,所以我有兩個數據數組和空單持有新陣列

$array1 = array('key1'=>'value1'); 
$array2 = array('key2'=>'value2'); 
$array3 = array(); 

要結合他們基於關鍵

foreach($array1 as $k=>$v) 
{ 
    if(array_key_exists($k, $array2)) 
    { 
     $array3[$k] = array($v, $array2[$k]); 
    } 
} 

$ ARRAY3持有新的數組。如果你想覆蓋原來的數組只需添加

$array1 = $array3; 

如果你想爲ARRAY3來保存ARRAY2沒有必須和陣列1也已再添加其他的在foreach

else 
{ 
    $array3[$k] = array($v, null); 
} 
內的細胞

這是爲了使它所以該陣列被通過它均勻地成形爲當你循環。

這將期待通過array1中的每一個元素,檢查陣列2在陣列1的每個鍵,如果存在的話,在那個關鍵抱着前面的兩個陣列的數據爲關鍵詞追加新的數組。

+0

嗨@Jake,謝謝你的回答。我得到它的工作。太感謝了! – 2012-03-12 23:56:00

+0

很高興我能幫到你。 – Jake 2012-03-13 00:03:38

+0

謝謝你,我只是碰到這個和調整有點我的目的,但你的解釋讓我過在我的工作項目中的大駝峯。謝謝! – kjones 2012-06-05 19:20:58