添加两个长度相同的数组

时间:2013-06-24 15:13:34

标签: php arrays

我有两个数组,

$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 个答案:

答案 0 :(得分: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 ) 

答案 1 :(得分: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有点棘手。值得一试。

答案 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 

答案 3 :(得分:-1)

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

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