Сложение суммы массива с разделением
Есть массивы заказов по городам:
(
[0] => stdClass Object
(
[order_price] => 1050
[order_date] => 2022-02-03 07:27:37
[order_status] => 2
[order_room] => г. Ивантеевка
[event_id] => 2905
[event_date] => 2022-02-05 12:00:00
[event_places] => a:1:{i:0;a:5:{s:1:"p";s:4:"1000";s:1:"t";s:12:"Партер";s:1:"i";s:5:"16:14";s:1:"r";s:2:"15";s:1:"n";s:2:"14";}}
)
[1] => stdClass Object
(
[order_price] => 3150
[order_date] => 2022-02-03 12:34:40
[order_status] => 2
[order_room] => г. Ивантеевка
[event_id] => 2905
[event_date] => 2022-02-05 12:00:00
[event_places] => a:2:{i:0;a:5:{s:1:"p";s:4:"1500";s:1:"t";s:12:"Партер";s:1:"i";s:4:"1:23";s:1:"r";s:1:"1";s:1:"n";s:2:"22";}i:1;a:5:{s:1:"p";s:4:"1500";s:1:"t";s:12:"Партер";s:1:"i";s:4:"1:24";s:1:"r";s:1:"1";s:1:"n";s:2:"23";}}
)
В [event_places] хранятся сериализованные данные заказа, такие как сектор, место, ряд и стоимость места.
$order_event = unserialize($order_event->event_places);
получаем:
Array
(
[0] => Array
(
[p] => 1500
[t] => Партер
[i] => 2:11
[r] => 2
[n] => 10
)
[1] => Array
(
[p] => 1500
[t] => Партер
[i] => 2:10
[r] => 2
[n] => 9
)
)
и т.д. по каждому заказу.
Нужно сложить количество мест и сумму мест. Чтобы получилось примерно так:
Array
(
[0] => 16 по 1500 руб. всего 24000 руб.
[1] => 10 по 1300 руб. всего 13000 руб.
[3] => 0 по 1000 руб. всего 0 руб.
[4] => 9 по 800 руб. всего 7200 руб.
)
по каждому городу
Ответы (1 шт):
Автор решения: Slava Rozhnev
→ Ссылка
Проблема может быть решена обычным циклом foreach:
foreach($data as $d) {
if (!isset($res[$d->order_room])) $res[$d->order_room] = [];
$places = unserialize($d->event_places);
foreach ($places as $p) {
if (!isset($res[$d->order_room][$p['p']])) $res[$d->order_room][$p['p']] = 1;
else $res[$d->order_room][$p['p']]++;
}
}
print_r($res);