<?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