3v4l.org

run code in 500+ PHP versions simultaneously
<?php $in[] = array('year' => '2010', 'month' => '11', 'grupo' => '2', 'quantity' => 3); $in[] = array('year' => '2010', 'month' => '11', 'grupo' => '3', 'quantity' => 4); $in[] = array('year' => '2011', 'month' => '2', 'grupo' => '2', 'quantity' => 4); $in[] = array('year' => '2011', 'month' => '2', 'grupo' => '2', 'quantity' => 4); $in[] = array('year' => '2012', 'month' => '3', 'grupo' => '4', 'quantity' => 3); $in[] = array('year' => '2012', 'month' => '3', 'grupo' => '4', 'quantity' => 3); $result = []; foreach ($in as $row) { $compositeKey = implode(array_slice($row, 0, 3)); if (!isset($result[$compositeKey])) { $result[$compositeKey] = $row; } else { $result[$compositeKey]['quantity'] += $row['quantity']; } } var_export( array_values($result) );

preferences:
41.75 ms | 1321 KiB | 5 Q