Kombinationen von Elementen in mehreren PHP-Arrays generieren
Beim Umgang mit mehreren Arrays unterschiedlicher Länge wird es schwierig, alle möglichen Kombinationen davon zu generieren ihre Elemente. Dieser Artikel befasst sich mit diesem Problem und bietet eine vielseitige PHP-Lösung.
Die Aufgabe besteht darin, eine Funktion zu erstellen, die eine beliebige Anzahl von Arrays akzeptiert und ein Array ausgibt, das alle möglichen Kombinationen ihrer Elemente enthält. Zum Beispiel bei drei Arrays:
$arrayA = array('A1', 'A2', 'A3'); $arrayB = array('B1', 'B2', 'B3'); $arrayC = array('C1', 'C2');
Die gewünschte Ausgabe wäre ein Array mit 18 Kombinationen:
[ ['A1', 'B1', 'C1'], ['A1', 'B1', 'C2'], ['A1', 'B2', 'C1'], ['A1', 'B2', 'C2'], ['A1', 'B3', 'C1'], ['A1', 'B3', 'C2'], ['A2', 'B1', 'C1'], ['A2', 'B1', 'C2'], ['A2', 'B2', 'C1'], ['A2', 'B2', 'C2'], ['A2', 'B3', 'C1'], ['A2', 'B3', 'C2'], ['A3', 'B1', 'C1'], ['A3', 'B1', 'C2'], ['A3', 'B2', 'C1'], ['A3', 'B2', 'C2'], ['A3', 'B3', 'C1'], ['A3', 'B3', 'C2'], ]
Die Lösung verwendet einen rekursiven Ansatz:
function combinations($arrays, $i = 0) { if (!isset($arrays[$i])) { return array(); } if ($i == count($arrays) - 1) { return $arrays[$i]; } // get combinations from subsequent arrays $tmp = combinations($arrays, $i + 1); $result = array(); // concat each array from tmp with each element from $arrays[$i] foreach ($arrays[$i] as $v) { foreach ($tmp as $t) { $result[] = is_array($t) ? array_merge(array($v), $t) : array($v, $t); } } return $result; }
Diese Funktion verwendet ein Array von Arrays als Eingabe und initialisiert einen rekursiven Zähler, $i, auf Null. Es prüft, ob das aktuelle Array am Index $i existiert und gibt ein leeres Array zurück, wenn dies nicht der Fall ist. Wenn $i gleich dem letzten Index ist, bedeutet dies den Basisfall und das aktuelle Array wird zurückgegeben.
Andernfalls werden Kombinationen rekursiv aufgerufen, um Kombinationen nachfolgender Arrays zu erhalten, die in $tmp gespeichert sind. Es initialisiert ein leeres $result-Array und iteriert über das aktuelle Array am Index $i. Für jedes Element in diesem Array wird es mit jeder Kombination aus $tmp verkettet und das Ergebnis an $result angehängt.
Dieser Prozess läuft rekursiv ab, bis alle Kombinationen generiert wurden. Das resultierende Array wird zurückgegeben und stellt alle möglichen Kombinationen von Elementen in den Eingabearrays dar.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient alle möglichen Kombinationen von Elementen aus mehreren PHP-Arrays unterschiedlicher Länge generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!