我有兩個數組,添加兩個數組長度相同
$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我會獲得最終的形式?
我有兩個數組,添加兩個數組長度相同
$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我會獲得最終的形式?
一個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是有點棘手,以避免笛卡爾的影響。值得一槍,但。
您可以查看兩個數組,然後將每個數組的每個值相加,然後將該結果添加到另一個數組。
foreach($array1 as $val1) {
foreach($array2 as $val2) {
array_push($newArray, intval($val1)+ intval(val2));
}
}
如果$ array1的大小是3,則$ newArray中會有9個項目。嵌套的foreach循環。 。 。 – Fallen
嘗試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)
如果需要添加元素通過匹配他們的關鍵不在他們的位置,你可以試試這個:
$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
您是否嘗試過使用foreach()循環來遍歷數組並添加值? –
array_merge有什麼問題? – Stephan
@Stephan - array_merge將連接數組; OP想要對鍵值相同的值進行求和。 – andrewsi