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了,但这不是解决方案。我将如何获得最终形式?

4

4 回答 4

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);

输出:

Array ( [0] => 8 [1] => 7 [2] => 2 ) 
于 2013-06-24T15:28:09.090 回答
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 避免笛卡尔效应有点棘手。不过值得一试。

于 2013-06-24T15:16:24.183 回答
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 
于 2013-06-24T15:47:03.633 回答
-1

您将查看两个数组并将每个数组的每个值相加,然后将该结果添加到另一个数组。

 foreach($array1 as $val1) {
     foreach($array2 as $val2) {
    array_push($newArray, intval($val1)+ intval(val2));
} 
} 
于 2013-06-24T15:14:36.970 回答