未知数量php数组上的笛卡尔积

未知数量php数组上的笛卡尔积,php,cartesian-product,Php,Cartesian Product,我需要从多个单独的阵列中获取每个唯一的组合。我不知道有多少阵列,因为这可能会有所不同 如果我错了,请纠正我,但我认为我应该使用笛卡尔积方法 这是我的数据的基本轮廓。 [ { "department": "CIS", "name": "Intro to CIS", "sections": { "01": { "regNum": "012345", "da

我需要从多个单独的阵列中获取每个唯一的组合。我不知道有多少阵列,因为这可能会有所不同

如果我错了,请纠正我,但我认为我应该使用
笛卡尔积
方法


这是我的数据的基本轮廓。

[
    {
        "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..等

您并不是在做所有部门的笛卡尔积,而是每个部门及其部门的积。您只需要两个嵌套循环,一个用于部门,另一个用于部门内的部分。然后,可以将部门名称和部门编号添加到关联数组中,并将其推送到结果中

$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;
    }
}

所以这不是免费的编码服务。你必须自己尝试解决这个问题。如果您无法让它工作,请发布您尝试的内容,我们将帮助您修复它。我已经思考了一段时间,不知道如何实现它。您需要使用嵌套循环。您还可以使用递归。编写代码以获取两个数组的叉积。如果您有两个以上的数组,请获取前两个数组的叉积,然后使用该结果和其余数组递归。@Barmar请查看我的编辑我在
foreach($sectno=>$secdata)上遇到错误。
你要让我猜错误是什么吗?用纯文本替换JSON的图像怎么样,这样我就可以将它粘贴到我的代码中并进行测试了?好的,可以。这只是一个解析错误。我认为这与分配MM当时工作的时间有关。非常感谢你的帮助!很抱歉再次打扰您,但输出不太正确。它目前打印出所有可能的部分,但我需要的是以下内容:
[[0]=>[[CIS 01数据],[MATH 01数据]],[1]=>[[CIS 01数据],[MATH 02数据]],[2]=>[[CIS 02数据],[MATH 01数据]],[3]=>[[CIS 02数据],[MATH 02数据]]].
,当然是伪代码