2012-12-12 148 views
-1

我有兩個數組,我想以特定的方式在PHP中合併。 所以我需要你的幫助來幫助我,因爲我試過並失敗了。php -Merging an Array

所以說,我有兩個數組:

$array1= array(
    "foo"  => 3, 
    "bar"  => 2, 
    "random1" => 4, 
); 

$array2= array(
    "random2" => 3, 
    "random3" => 4, 
    "foo"  => 6, 
); 

現在,當合並我想公用密鑰的價值觀過程中添加。 所以像存在陣列1數組2因此與陣列2合併陣列1時,我應該得到"foo" => "9"

我更好的說明會是最後一個數組,看起來像這樣:

$array1= array(
    "foo"  => 9, 
    "bar"  => 2, 
    "random1" => 4, 
    "random2" => 3, 
    "random3" => 4, 
); 

所以我再次想要將常用密鑰的值加在一起,並將非常用密鑰添加到陣列或新陣列中

我希望我是很清晰

感謝, Vidhu

+0

'foreach'通過'$ array2',添加值如果'$ array1'現有密鑰,如果不是,則附加項目。 – Wrikken

回答

1

類似的東西:

function mergeValues() { 
    $result = array(); 
    $arraysToMerge = func_get_args(); 
    foreach ($arraysToMerge as $array) { 
     foreach($array as $key => $value) { 
      $result[$key] += $value; 
     } 
    } 

    return $result; 
} 

$res = mergeValues($array1, $array2, $array3); // Can pass any ammount of arrays to a function. 
+0

真棒!完美的作品! – Krimson

+0

恭維,它確實是一個優雅的解決方案。 – freedev

+0

@freedev謝謝 –

1
foreach($array1 as $k => $v) 
{ 
    If (isset($array2[$k])) 
     $array1[$k] += $array2[$k]; 
} 
foreach($array2 as $k => $v) 
{ 
    If (!isset($array1[$k])) 
     $array1[$k] = $array2[$k]; 
} 
+0

如果沒有其他需要 –

+0

是的,你是對的... – freedev