3v4l.org

run code in 500+ PHP versions simultaneously
<?php Class Unit{ public function __construct(public readonly ?string $name){} } Class Branch{ public array $units = []; public function __construct(public readonly ?string $name){} } Class Group{ public array $branches = []; public function __construct(public readonly string $name){} } $sampleData = [ ['g1', 'b1', null], ['g1', 'b1', 'u2'], ['g2', null, 'u3'], ['g2', 'b6', 'u4'], ['g3', 'b7', 'u5'], ]; $groups = []; foreach($sampleData as $row){ $groupId = $row[0]; $branchId = $row[1]; $unitId = $row[2]; if(!isset($groups[$groupId])){ $groups[$groupId] = new Group($groupId); } if(!isset($groups[$groupId]->branches[$branchId])){ $groups[$groupId]->branches[$branchId] = new Branch($branchId); } if(!isset($groups[$groupId]->branches[$branchId]->units[$unitId])){ $groups[$groupId]->branches[$branchId]->units[$unitId] = new Unit($unitId); } } var_dump($groups);
Output for 8.5.0 - 8.5.3
Deprecated: Using null as an array offset is deprecated, use an empty string instead in /in/WE17l on line 39 Deprecated: Using null as an array offset is deprecated, use an empty string instead in /in/WE17l on line 40 Deprecated: Using null as an array offset is deprecated, use an empty string instead in /in/WE17l on line 35 Deprecated: Using null as an array offset is deprecated, use an empty string instead in /in/WE17l on line 36 Deprecated: Using null as an array offset is deprecated, use an empty string instead in /in/WE17l on line 39 Deprecated: Using null as an array offset is deprecated, use an empty string instead in /in/WE17l on line 40 array(3) { ["g1"]=> object(Group)#1 (2) { ["branches"]=> array(1) { ["b1"]=> object(Branch)#2 (2) { ["units"]=> array(2) { [""]=> object(Unit)#3 (1) { ["name"]=> NULL } ["u2"]=> object(Unit)#4 (1) { ["name"]=> string(2) "u2" } } ["name"]=> string(2) "b1" } } ["name"]=> string(2) "g1" } ["g2"]=> object(Group)#5 (2) { ["branches"]=> array(2) { [""]=> object(Branch)#6 (2) { ["units"]=> array(1) { ["u3"]=> object(Unit)#7 (1) { ["name"]=> string(2) "u3" } } ["name"]=> NULL } ["b6"]=> object(Branch)#8 (2) { ["units"]=> array(1) { ["u4"]=> object(Unit)#9 (1) { ["name"]=> string(2) "u4" } } ["name"]=> string(2) "b6" } } ["name"]=> string(2) "g2" } ["g3"]=> object(Group)#10 (2) { ["branches"]=> array(1) { ["b7"]=> object(Branch)#11 (2) { ["units"]=> array(1) { ["u5"]=> object(Unit)#12 (1) { ["name"]=> string(2) "u5" } } ["name"]=> string(2) "b7" } } ["name"]=> string(2) "g3" } }
Output for 8.1.13 - 8.1.34, 8.2.21 - 8.2.30, 8.3.5 - 8.3.30, 8.4.1 - 8.4.18
array(3) { ["g1"]=> object(Group)#1 (2) { ["branches"]=> array(1) { ["b1"]=> object(Branch)#2 (2) { ["units"]=> array(2) { [""]=> object(Unit)#3 (1) { ["name"]=> NULL } ["u2"]=> object(Unit)#4 (1) { ["name"]=> string(2) "u2" } } ["name"]=> string(2) "b1" } } ["name"]=> string(2) "g1" } ["g2"]=> object(Group)#5 (2) { ["branches"]=> array(2) { [""]=> object(Branch)#6 (2) { ["units"]=> array(1) { ["u3"]=> object(Unit)#7 (1) { ["name"]=> string(2) "u3" } } ["name"]=> NULL } ["b6"]=> object(Branch)#8 (2) { ["units"]=> array(1) { ["u4"]=> object(Unit)#9 (1) { ["name"]=> string(2) "u4" } } ["name"]=> string(2) "b6" } } ["name"]=> string(2) "g2" } ["g3"]=> object(Group)#10 (2) { ["branches"]=> array(1) { ["b7"]=> object(Branch)#11 (2) { ["units"]=> array(1) { ["u5"]=> object(Unit)#12 (1) { ["name"]=> string(2) "u5" } } ["name"]=> string(2) "b7" } } ["name"]=> string(2) "g3" } }

preferences:
53.34 ms | 831 KiB | 4 Q