<?php
$array = [
['group' => 'Apple', 'num' => 5, 'price' => 10],
['group' => 'Apple', 'num' => 2, 'price' => 8],
['group' => 'Orange', 'num' => 4, 'price' => 6],
['group' => 'Orange', 'num' => 12, 'price' => 24],
];
$result = [];
foreach ($array as $row) {
if (!isset($ref[$row['group']])) {
$ref[$row['group']] = $row;
$result[] =& $ref[$row['group']];
continue;
}
$ref[$row['group']]['num'] += $row['num'];
$ref[$row['group']]['price'] += $row['price'];
}
var_export($result);
- Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
- array (
0 =>
array (
'group' => 'Apple',
'num' => 7,
'price' => 18,
),
1 =>
array (
'group' => 'Orange',
'num' => 16,
'price' => 30,
),
)
preferences:
94.66 ms | 402 KiB | 62 Q