3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data = <<<JSON [ { "department": "CIS", "name": "Intro to CIS", "sections": [ { "sectionNumber": "01", "regNum": "012345", "days": "MWF", "startTime": "900", "endTime": "1030", "labDay": "M", "labStartTime": "1300", "labEndTime": "1500" }, { "sectionNumber": "02", "regNum": "098304", "days": "TR", "startTime": "1300", "endTime": "1500", "labDay": "", "labStartTime": "", "labEndTime": "" } ] }, { "department": "MATH", "name": "Intro to MATH", "sections": [ { "sectionNumber": "01", "regNum": "012345", "days": "MWF", "startTime": "900", "endTime": "1030", "labDay": "M", "labStartTime": "1300", "labEndTime": "1500" }, { "sectionNumber": "02", "regNum": "098304", "days": "TR", "startTime": "1300", "endTime": "1500", "labDay": "", "labStartTime": "", "labEndTime": "" } ] } ] JSON; $jsonArrayEntry = json_decode($data, true); function crossProduct() { $_ = func_get_args(); if (count($_) == 0) { return array(array()); } $a = array_shift($_); $c = call_user_func_array('crossProduct', $_); $r = array(); foreach ($a as $v) { foreach ($c as $p) { $r[] = array_merge(array($v), $p); } } return $r; } $allDepartmentsSections = []; foreach ($jsonArrayEntry as $entry) { $sections = []; foreach ($entry["sections"] as $section) { $sections[] = $section + [ "department" => $entry["department"], "name"=>$entry["name"] ]; } $allDepartmentsSections[] = $sections; } print_r(call_user_func_array('crossProduct', $allDepartmentsSections));
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Array ( [0] => Array ( [0] => Array ( [sectionNumber] => 01 [regNum] => 012345 [days] => MWF [startTime] => 900 [endTime] => 1030 [labDay] => M [labStartTime] => 1300 [labEndTime] => 1500 [department] => CIS [name] => Intro to CIS ) [1] => Array ( [sectionNumber] => 01 [regNum] => 012345 [days] => MWF [startTime] => 900 [endTime] => 1030 [labDay] => M [labStartTime] => 1300 [labEndTime] => 1500 [department] => MATH [name] => Intro to MATH ) ) [1] => Array ( [0] => Array ( [sectionNumber] => 01 [regNum] => 012345 [days] => MWF [startTime] => 900 [endTime] => 1030 [labDay] => M [labStartTime] => 1300 [labEndTime] => 1500 [department] => CIS [name] => Intro to CIS ) [1] => Array ( [sectionNumber] => 02 [regNum] => 098304 [days] => TR [startTime] => 1300 [endTime] => 1500 [labDay] => [labStartTime] => [labEndTime] => [department] => MATH [name] => Intro to MATH ) ) [2] => Array ( [0] => Array ( [sectionNumber] => 02 [regNum] => 098304 [days] => TR [startTime] => 1300 [endTime] => 1500 [labDay] => [labStartTime] => [labEndTime] => [department] => CIS [name] => Intro to CIS ) [1] => Array ( [sectionNumber] => 01 [regNum] => 012345 [days] => MWF [startTime] => 900 [endTime] => 1030 [labDay] => M [labStartTime] => 1300 [labEndTime] => 1500 [department] => MATH [name] => Intro to MATH ) ) [3] => Array ( [0] => Array ( [sectionNumber] => 02 [regNum] => 098304 [days] => TR [startTime] => 1300 [endTime] => 1500 [labDay] => [labStartTime] => [labEndTime] => [department] => CIS [name] => Intro to CIS ) [1] => Array ( [sectionNumber] => 02 [regNum] => 098304 [days] => TR [startTime] => 1300 [endTime] => 1500 [labDay] => [labStartTime] => [labEndTime] => [department] => MATH [name] => Intro to MATH ) ) )

preferences:
131.62 ms | 418 KiB | 5 Q