Как объединить результаты итераций по ключу foreach php?

Подскажите пожалуйста ув. мастера по php.
Имеется вот такой код для примера: https://repl.it/repls/LovelySaneMonitors

PHP:
$result = array(
  ['date'=>'10.07.2018','item'=>'1','summ'=>'3000'],
  ['date'=>'10.07.2018','item'=>'1','summ'=>'6000'],
  ['date'=>'10.07.2018','item'=>'1','summ'=>'12000'],

  ['date'=>'11.07.2018','item'=>'1','summ'=>'7000'],
  ['date'=>'12.07.2018','item'=>'1','summ'=>'1000'],
);


Результат php foreach:
<p>Дата: 10.07.2018, количество заказов: 1, сумма: 3000</p>
  <p>Дата: 10.07.2018, количество заказов: 1, сумма: 6000</p>
  <p>Дата: 10.07.2018, количество заказов: 1, сумма: 12000</p>
  <p>Дата: 11.07.2018, количество заказов: 1, сумма: 7000</p>
  <p>Дата: 12.07.2018, количество заказов: 1, сумма: 1000</p>


Как можно объединить итерации по дате, чтобы на выходе было так:
<p>Дата: 10.07.2018, количество заказов: 3, сумма: 21000</p>
  <p>Дата: 11.07.2018, количество заказов: 1, сумма: 7000</p>
  <p>Дата: 12.07.2018, количество заказов: 1, сумма: 1000</p>


Подскажите пожалуйста решение
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
0xD34F
@0xD34F
$grouped = [];

foreach ($result as $r) {
  $key = $r['date'];
  if (!isset($grouped[$key])) {
    $grouped[$key] = $r;
  } else {
    $grouped[$key]['item'] += $r['item'];
    $grouped[$key]['summ'] += $r['summ'];
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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