2014-11-05 57 views

回答

1

部分將是陣列1可以不具有全部相同的密鑰陣列2所以,需要從兩個原始陣列的所有鍵的陣列,然後依次通過這些鍵,檢查是否它存在於任何原始數組中,並最終將其添加到最終的組合數組中。

<?php 
    $array1 = array('a' => 1, 'b' => 2, 'c' => 3); 
    $array2 = array('a' => 1, 'b' => 2, 'd' => 3); 
    $finalarr = array(); 
    $arrkeys = array_merge(array_keys($array1), array_keys($array2)); 
    $arrkeys = array_unique($arrkeys); 

    foreach($arrkeys as $key) { 
     $finalarr[$key] = 0; 

     if (isset($array1[$key])) { 
      $finalarr[$key] += $array1[$key]; 
     } 
     if (isset($array2[$key])) { 
      $finalarr[$key] += $array2[$key]; 
     } 
    } 

    print_r($finalarr); 
?> 
3

你可以嘗試這樣的事情:

foreach($array2 as $key2 => $val2){ 
    if(key_exists($key2, $array1)) { 
     $array1[$key2] += $val2; 
    } else { 
     $array1[$key2] = $val2; 
    } 
} 
0
foreach($array1 as $key=>$value){ 
    if(isset($array2[$key])){ 
     $array1[$key] = $array1[$key] + $array2[$key]; 
     } 
    } 

不是最優雅的方式,它將使用array_walk或array_map,但我喜歡看到和知道到底發生了什麼事情。這會給你你正在尋找的東西。

+0

如果在array1中不存在某個鍵但在array2中存在什麼? – 2014-11-05 15:52:18

+0

現在根據問題的表述方式,他詢問將值附加到array1。如果在array1中不存在該鍵,我不認爲他會將該鍵從array2添加到array1。 – aamirl 2014-11-05 15:54:18

0

首先總和共同鍵,之後的值,添加其他鍵的其他數組中:

foreach ($array2 as $k2 => $a2){ 
    if (isset($array1[$k2])){ 
    $array1[$k2]+=$a2; 
    unset($array2[$k2]); 
    } 
} 
$array1 += $array2; 
0

喜歡的東西:

$result = array(); 

function ParseArray(array $array, array &$result) 
{ 
    foreach ($array as $k => $v) { 
     if (!array_key_exists($k, $result) { 
      $result[$k] = $v; 
     } else { 
      $result[$k] += $v; 
     } 
    } 
} 

ParseArray($Array1, $result); 
ParseArray($Array2, $result); 

print_r($result); 

你應該閱讀有關PHP array functions。該問題的

0
$array1 = array(
    'a' => 1, 
    'b' => 2, 
    'c' => 3, 
); 

$array2 = array(
    'a' => 1, 
    'b' => 1, 
); 

array_walk(
    $array1, 
    function (&$value, $key) use ($array2) { 
     $value += (isset($array2[$key])) ? $array2[$key] : 0; 
    } 
); 
var_dump($array1); 
相關問題