我有两个数组,
$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
,但这不是解决方案。我怎样才能获得最终表格?
答案 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));
}
}