<?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],
];
var_export(
array_values(
array_reduce(
$array,
function ($result, $row) {
if (!isset($result[$row['group']])) {
$result[$row['group']] = $row;
} else {
$result[$row['group']]['num'] += $row['num'];
$result[$row['group']]['price'] += $row['price'];
}
return $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:
101.26 ms | 402 KiB | 62 Q