2013-06-24 139 views
0

我有兩個數組,添加兩個數組長度相同

$arr_1 = array(01=>5, 02=>3, 03=>2); $arr_2 = array(01=>3, 02=>4, 03=>0);

我想要實現的是有一個單一的陣列,其中加入兩個數組後的最終形式是,

$arr_3 = array(01=>8, 02=>7, 03=>2);

我試圖array_merge,但它不是solution.How我會獲得最終的形式?

+1

您是否嘗試過使用foreach()循環來遍歷數組並添加值? –

+0

array_merge有什麼問題? – Stephan

+1

@Stephan - array_merge將連接數組; OP想要對鍵值相同的值進行求和。 – andrewsi

回答

1

一個for循環應該處理這個問題:

$max = count($arr_1); 
$arr_3 = array(); 

for($i = 0; $i < $max; $i++){ 
    $arr_3[$i] = intval($arr_1[$i]) + intval($arr_2[$i]); 
} 

我敢肯定有很多其他的方法可以做到這一點,但是這是浮現在腦海的第一個。你也可以做一個foreach循環:

$arr_3 = array(); 

foreach($arr_1 as $k => $v){ 
    $arr_3[$k] = intval($v) + intval($arr_2[$k]); 
} 

我只是即興表演在這裏,在foreach是有點棘手,以避免笛卡爾的影響。值得一槍,但。

-1

您可以查看兩個數組,然後將每個數組的每個值相加,然後將該結果添加到另一個數組。

foreach($array1 as $val1) { 
    foreach($array2 as $val2) { 
    array_push($newArray, intval($val1)+ intval(val2)); 
} 
} 
+0

如果$ array1的大小是3,則$ newArray中會有9個項目。嵌套的foreach循環。 。 。 – Fallen

3

嘗試array_map。從PHP手冊

array_map()返回一個數組,其中包含arr1的所有元素 將回調函數應用於每個元素之後。回調函數接受的 參數的數量應匹配傳遞給array_map()

$arr_1 = array(01=>5, 02=>3, 03=>2); 
$arr_2 = array(01=>3, 02=>4, 03=>0); 

$arr_3 = array_map('add', $arr_1, $arr_2); 

function add($ar1, $ar2){ 
    return $ar1+$ar2; 
} 

print_r($arr_3); 

OUTPUT陣列的數目 :

Array ([0] => 8 [1] => 7 [2] => 2) 
0

如果需要添加元素通過匹配他們的關鍵不在他們的位置,你可以試試這個:

$array1 = array(1=>5, 2=>3, 3=>2); 
$array2 = array(3=>3, 2=>4, 1=>0); //unsorted array 

$keys_matched = array_intersect_key ($array1 , $array2); 
foreach ($keys_matched as $key => $value) { 
    $result[$key] = $array1[$key] + $array2[$key]; 
} 
print_r($result); //Displays: Array ([1] => 5 [2] => 7 [3] => 5