@Kak_B_CTapou_Cka3ke

Как сложить значения массивов по ключам?

Есть два массива такого вида:
[Nick1] => Array ( [0] => 32 [1] => 8 )
[Nick2] => Array ( [0] => 21 [1] => 9 )
[Nick3] => Array ( [0] => 3 [1] => 0 )

---
[Nick1] => Array ( [0] => 6 [1] => 1 )
[Nick2] => Array ( [0] => 3 [1] => 2 )
[Nick3] => Array ( [0] => 8 [1] => 3 )
[Nick4] => Array ( [0] => 12 [1] => 18 )


ключи в обоих одинаковые (иногда появляются новые элементы в одном из массивов, как [Nick4] в примере), а выделенные значения надо сложить по ключу и получить новый массив с теми же ключами, но с новыми значениями:

[Nick1] => Array ( [0] => 38 [1] => 9 )
[Nick2] => Array ( [0] => 24 [1] => 11 )
[Nick3] => Array ( [0] => 11 [1] => 3 )
[Nick4] => Array ( [0] => 12 [1] => 18 )


Как бы это реализовать?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
0xD34F
@0xD34F
function merge(...$arrays) {
  $result = [];

  foreach ($arrays as $arr) {
    foreach ($arr as $key => $values) {
      if (!isset($result[$key])) {
        $result[$key] = [];
      }

      for ($i = 0; $i < count($values); $i++) {
        $result[$key][$i] = ($result[$key][$i] ?? 0) + $values[$i];
      }
    }
  }

  return $result;
}


$arr = merge($arr1, $arr2);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы