как сложить два равных по длине массива по индексам

Рейтинг: 0Ответов: 3Опубликовано: 06.07.2023

Есть два массива

$arr = array([0] => 1,[1] => 2, [2] => 3 )
$arr1 = array([0] => 4,[1] => 5, [2] => 6 )

Размеры массивов могут меняться, но они всегда будут одинаковыми

Как сложить эти два массива с равными индексами чтобы на выходе получилось следующее

array([0] => 5,[1] => 7,[2] => 9)

Ответы

▲ 1Принят
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arrSum = [];

for ($i = 0; $i < count($arr1); $i++) {
    $arrSum[$i] = $arr1[$i] + $arr2[$i];
}

print_r($arrSum);

или короче

$arrSum = array_map(function($valArr1, $valArr2) { return $valArr1 + $valArr2;}, $arr1, $arr2);
print_r($arrSum);
▲ 0

пробуйте это

$a1 = array('0' => 1, '1' => 2, '2' => 3);
    $a2 = array('0' => 4, '1' => 5, '2' => 6);
    
    $sums = array();
        
    foreach (array_keys($a1 + $a2) as $c) {
      $sums[$c] = (isset($a1[$c]) ? $a1[$c] : 0) + (isset($a2) ? $a2[$c] : 0);
    }
    var_dump($sums);

посмотреть онлайн

▲ 0

Как-то так можно, но ощущение, что можно еще упростить.

$a = [1,2,3];
$b = [10,11,12];

$result = array_map('array_sum', array_map(null, $a, $b));

что в целом можно альтернативно записать как

array_map(fn($a,$b) => $a+$b, $a, $b)