3v4l.org

run code in 300+ PHP versions simultaneously
<?php $products = array( [ 'id' => 12, 'group' => 'abc', 'name' => 'Lorem', ], [ 'id' => 12, 'group' => 'def', 'name' => 'Ipsum', ], [ 'id' => 34, 'group' => 'ghi', 'name' => 'Dolor', ], [ 'id' => 34, 'group' => 'jkl', 'name' => 'Sit', ], [ 'id' => 34, 'group' => 'mno', 'name' => 'Amet', ], ); $grouped = array_reduce($products, function ($c, $v) { $c[$v['id']][$v['group']] = $v; return $c; }, []); print_r($grouped); $products[] = [ 'id' => 34, 'group' => 'jkl', 'name' => 'Consectetur', ]; $grouped = array_reduce($products, function ($c, $v) { $c[$v['id']][$v['group']] = $v; return $c; }, []); print_r($grouped); $grouped = array_reduce($products, function ($c, $v) { $c[$v['id']][$v['group']][] = $v; return $c; }, []); print_r($grouped);
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
Array ( [12] => Array ( [abc] => Array ( [id] => 12 [group] => abc [name] => Lorem ) [def] => Array ( [id] => 12 [group] => def [name] => Ipsum ) ) [34] => Array ( [ghi] => Array ( [id] => 34 [group] => ghi [name] => Dolor ) [jkl] => Array ( [id] => 34 [group] => jkl [name] => Sit ) [mno] => Array ( [id] => 34 [group] => mno [name] => Amet ) ) ) Array ( [12] => Array ( [abc] => Array ( [id] => 12 [group] => abc [name] => Lorem ) [def] => Array ( [id] => 12 [group] => def [name] => Ipsum ) ) [34] => Array ( [ghi] => Array ( [id] => 34 [group] => ghi [name] => Dolor ) [jkl] => Array ( [id] => 34 [group] => jkl [name] => Consectetur ) [mno] => Array ( [id] => 34 [group] => mno [name] => Amet ) ) ) Array ( [12] => Array ( [abc] => Array ( [0] => Array ( [id] => 12 [group] => abc [name] => Lorem ) ) [def] => Array ( [0] => Array ( [id] => 12 [group] => def [name] => Ipsum ) ) ) [34] => Array ( [ghi] => Array ( [0] => Array ( [id] => 34 [group] => ghi [name] => Dolor ) ) [jkl] => Array ( [0] => Array ( [id] => 34 [group] => jkl [name] => Sit ) [1] => Array ( [id] => 34 [group] => jkl [name] => Consectetur ) ) [mno] => Array ( [0] => Array ( [id] => 34 [group] => mno [name] => Amet ) ) ) )

preferences:
177.67 ms | 419 KiB | 5 Q