Ich versuche, alle möglichen Kombinationen für eine unbekannte Anzahl von Arrays als solche zu erhalten:Erhalten Sie alle einzigartigen Array Kombinationen mit rechtwinkligen Produkt PHP
Hier ist die JSON-Datenstruktur
[
{
"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": ""
}
]
}
]
I möchte, dass das Ergebnis wie folgt lautet: Das Ergebnis sollte das assoziative Array des gesamten Kurses enthalten, damit ich auf alle seine Daten zugreifen kann (Abschnittsnummer, RegNr, Tage, .. usw.)
Hinweis, ich weiß nicht, wie viele Kurse oder Abschnitte es gibt. Außerdem sollte ein Kurs niemals mit sich selbst verglichen werden.
Gewünschtes Ergebnis:
[
[ [CIS 01 Array],[MATH 01 Array] ],
[ [CIS 01 Array],[MATH 02 Array] ],
[ [CIS 02 Array],[MATH 01 Array] ],
[ [CIS 02 Array],[MATH 02 Array]]
]
Jedes Ergebnis Array sollte Arrays enthalten von Arrays (das die gleiche Länge wie die Anzahl der Gänge sind).
Ich denke, ich soll das Kartesisches Produkt verwenden, aber ich bin nicht ganz sicher, wie dies zu implementieren. Ich begann, so etwas zu tun, aber ich weiß es nicht korrekt ist:
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"];
}
}
}
}
Abhängig von Ihren Speicherbedingungen können Sie eine rekursive Funktion verwenden, die alle verbleibenden Elemente einschließlich sich selbst zu Ihrem Ergebnis-Array hinzufügt. –
@ChrisThorsvik Aber sollte das Ergebnis-Array sein, das Arrays enthält, die Arrays enthalten. Auch sollte ein Kurs niemals mit sich selbst vergleichen. –
Können Sie eine Sache klären? Sie sagten: "Jedes Ergebnis-Array sollte Arrays enthalten, die die gleiche Länge wie die Anzahl der Kurse haben." Meinten Sie, dass jedes Element im Ergebnis-Array genau einen Kurs von jeder Abteilung enthalten sollte? –