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

Здравствуйте, есть такой массив
"items": [
                [
                    "type": "first",
                    "typeAmount": 20,
                    "amount": 100,
                ],
                [
                    "type": "first",
                    "typeAmount": 40,
                    "amount": 10,
                ],
                [
                    "type": "second",
                    "typeAmount": 20,
                    "amount": 30,
                ]
]

Подскажите, как по условию, того что ключи type равны друг другу сложить ключи typeAmount и amount, чтоб в итоге получить такой массив
"items": [
                [
                    "type": "first",
                    "typeAmount": 60,
                    "amount": 110,
                ],
                [
                    "type": "second",
                    "typeAmount": 20,
                    "amount": 30,
                ]
]
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
0xD34F
@0xD34F
$grouped = [];

foreach ($items as $n) {
  $grouped[$n['type']] ??= [
    'type' => $n['type'],
    'typeAmount' => 0,
    'amount' => 0,
  ];

  $grouped[$n['type']]['typeAmount'] += $n['typeAmount'];
  $grouped[$n['type']]['amount'] += $n['amount'];
}

$grouped = array_values($grouped);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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