3v4l.org

run code in 500+ PHP versions simultaneously
<?php $in = [ [ 'saledate' => '2016-02-01', 'name' => 'John Doe', 'markup' => 561 ], [ 'saledate' => '2016-02-01', 'name' => 'John Doe', 'markup' => 681 ], [ 'saledate' => '2016-02-02', 'name' => 'John Doe', 'markup' => 379 ], [ 'saledate' => '2016-02-01', 'name' => 'Jane Doe', 'markup' => 205 ], [ 'saledate' => '2016-02-02', 'name' => 'Jane Doe', 'markup' => 900 ], [ 'saledate' => '2016-02-02', 'name' => 'Jane Doe', 'markup' => 787 ], [ 'saledate' => '2016-02-03', 'name' => 'Jane Doe', 'markup' => 211 ] ]; $result = []; foreach ($in as ['saledate' => $s, 'name' => $n, 'markup' => $m]) { if (!isset($ref[$n])) { $ref[$n] = ['name' => $n, $s => $m]; $result[] = &$ref[$n]; } else { $ref[$n][$s] = ($ref[$n][$s] ?? 0) +$m; } } var_export($result);

preferences:
42.77 ms | 1157 KiB | 5 Q