[英]Cartesian Product on unknown number of php arrays
我需要从多个单独的数组中获得每种唯一的组合。 我不知道有多少个数组,因为这可能会有所不同。
如果我错了,请纠正我,但我认为我应该使用Cartesian Product
方法。
这是我的数据的基本概述。
[
{
"department": "CIS",
"name": "Intro to CIS",
"sections": {
"01": {
"regNum": "012345",
"days": "MWF",
"startTime": "900",
"endTime": "1030",
"labDay": "M",
"labStartTime": "1300",
"labEndTime": "1500"
},
"02": {
"regNum": "098304",
"days": "TR",
"startTime": "1300",
"endTime": "1500",
"labDay": "",
"labStartTime": "",
"labEndTime": ""
}
}
},
{
"department": "MATH",
"name": "Intro to MATH",
"sections": {
"01": {
"regNum": "012345",
"days": "MWF",
"startTime": "900",
"endTime": "1030",
"labDay": "M",
"labStartTime": "1300",
"labEndTime": "1500"
},
"02": {
"regNum": "098304",
"days": "TR",
"startTime": "1300",
"endTime": "1500",
"labDay": "",
"labStartTime": "",
"labEndTime": ""
}
}
}
]
所需结果:
[[[CIS 01 Array],[MATH 01 Array]],
[[CIS 01 Array],[MATH 02 Array]],
[[CIS 02 Array],[MATH 01 Array]],
[[CIS 02 Array],[MATH 02 Array]]
]
请注意,这些是数组,因为我仍然需要访问days,startTime ..etc
您并不是在做所有部门的笛卡尔积,而是每个部门及其部门的积。 您只需要2个嵌套循环,一个用于部门,另一个用于部门中的部分。 然后,您可以将部门名称和部门编号添加到关联数组中,并将其推入结果中。
$departments = json_decode($json_string, true);
$result = array();
foreach ($departments as $dept) {
$name = $dept['department'];
foreach ($dept['sections'] as $sectno => $secdata) {
$secdata['dept'] = $name;
$secdata['section'] = $sectno;
$result[] = $secdata;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.