Я пытаюсь получить все возможные комбинации для неизвестного числа массивов, как например:Получить все уникальные комбинации массива с помощью декартова PHP продукта
Вот Структура данных JSON
[
{
"department": "CIS",
"name": "Intro to CIS",
"sections": [
{
"sectionNumber": "01",
"regNum": "",
"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": "",
"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": ""
}
]
}
]
я хотел бы, чтобы результат был следующим: результат должен содержать весь ассоциативный ассоциатив курса, чтобы я мог получить доступ ко всем его данным (sectionNumber, regNum, days, ..etc)
Примечание. Я не знаю, сколько курсов или разделов будет. Кроме того, курс никогда не должен сравниваться с самим собой.
желаемый результат:
[
[ [CIS 01 Array],[MATH 01 Array] ],
[ [CIS 01 Array],[MATH 02 Array] ],
[ [CIS 02 Array],[MATH 01 Array] ],
[ [CIS 02 Array],[MATH 02 Array]]
]
Каждый массив результат должен содержать массивы (которые имеют одинаковую длину, как количество курсов) массивы.
Я думаю, что я должен использовать декартово продукт, но я не совсем уверен в том, как это реализовать. я начал делать что-то вроде этого, но я знаю, что это не правильно:
for($i = 0; $i < count($json_data); $i++){ //courses
for($k = 0; $k < count($json_data[$i]["sections"]); $k++){ //first sections
for($p = 1; $p < count($json_data[$i]["sections"]); $p++){ //all other courses but 1
for($h = 0; $h < count($json_data[$i]["sections"][$p]); $h++){
echo $json_data[$i]["sections"][$k]["labDay"];
}
}
}
}
В зависимости от ограничений памяти вы можете использовать рекурсивную функцию, которая добавляет все оставшиеся элементы, включая себя в массив результатов. –
@ChrisThorsvik Но должен быть массив результатов, содержащий массивы, содержащие массивы. Кроме того, курс никогда не должен сравниваться с самим собой. –
Можете ли вы прояснить одно? Вы сказали: «Каждый массив результатов должен содержать массивы ..., которые имеют ту же длину, что и количество курсов». Вы имели в виду, что каждый элемент массива результатов должен содержать ровно один курс из каждого отдела? –