3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Info { public function __construct(public int $count) {} } $ballsToDolls = [1 => [11 => new Info(3), 22 => new Info(4)], 2 => [22 => new Info(5), 44 => new Info(6)]]; print_r($ballsToDolls); $data = []; foreach ($ballsToDolls as $ballId => $dolls) { foreach ($dolls as $dollId => $info) { $data[$ballId][$dollId] = ($data[$ballId][$dollId] ?? 0) + $info->count; } } print_r($data); $data = $ballsToDolls; array_walk_recursive($data, static function(&$item, $key) { $item = $item instanceof Info ? $item->count : $item; }); print_r($data);
Output for 8.1.32, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Array ( [1] => Array ( [11] => Info Object ( [count] => 3 ) [22] => Info Object ( [count] => 4 ) ) [2] => Array ( [22] => Info Object ( [count] => 5 ) [44] => Info Object ( [count] => 6 ) ) ) Array ( [1] => Array ( [11] => 3 [22] => 4 ) [2] => Array ( [22] => 5 [44] => 6 ) ) Array ( [1] => Array ( [11] => 3 [22] => 4 ) [2] => Array ( [22] => 5 [44] => 6 ) )

preferences:
54 ms | 408 KiB | 5 Q