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) );
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array ( 0 => array ( 'year' => '2010', 'month' => '11', 'grupo' => '2', 'quantity' => 3, ), 1 => array ( 'year' => '2010', 'month' => '11', 'grupo' => '3', 'quantity' => 4, ), 2 => array ( 'year' => '2011', 'month' => '2', 'grupo' => '2', 'quantity' => 8, ), 3 => array ( 'year' => '2012', 'month' => '3', 'grupo' => '4', 'quantity' => 6, ), )

preferences:
55.19 ms | 1319 KiB | 4 Q