Wie generieren in PHP alle Kombinationen von Elementen in mehrere arrays
Ich ' im Versuch zu finden, die alle Kombinationen von Elementen in mehrere arrays.
Die Anzahl der arrays ist zufällig (dies kann 2, 3, 4, 5...).
Die Anzahl der Elemente in jedem array ist zufällig auch...
Zum Beispiel, habe ich die 3 arrays :
$arrayA = array('A1','A2','A3');
$arrayB = array('B1','B2','B3');
$arrayC = array('C1','C2');
Ich würde gerne erzeugen ein array mit 3 x 3 x 2 = 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
...
Das problem ist das erstellen einer Funktion mit einer Variablen Anzahl von Quell-arrays...
Sie wollen immer ein element von jedes - array?
InformationsquelleAutor Yohan | 2011-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die rekursive Lösung:
und für alle anderen mit derselben Frage, siehe array_unique, php.net/manual/en/function.array-unique.php
InformationsquelleAutor Krzysztof
Dies ist ein Kartesisches Produkt, und ich nur fragte die gleiche Frage vor nicht allzu langer Zeit. Hier ist die Algorithmus, der gebucht wird auf der PHP-website.
Diese Funktion nimmt über 2,5 mal so lang wie Lolo ' s-Funktion zu verarbeiten, die das gleiche array.
InformationsquelleAutor barfoon
Dieser code, neben der Einfachheit, bekommen alle Kombinationen mehrerer arrays und behält die Schlüssel.
Exemple:
Zurück:
diese Lösung funktionierte perfekt für mich, hatte zu zwicken, ein bisschen zu kombinieren, die mehrere assoziative arrays.
InformationsquelleAutor Guilhermo Luna
Ich weiß, diese Frage ist alt, aber ich hab das gleiche Problem heute und beschlossen, der neue Generator einen Versuch:
Ergebnis:
das ist die einfachste Lösung
gibt es eine Möglichkeit, dies zu erreichen ?
array(4) { 'd' => string(1) "E" 'c' => string(1) "C" 'b' => string(1) "B" 'a' => string(1) "A" }
workaround für meine Frage: erstellen Sie ein array, wie das
['a' => [['key' => 'a', 'value' => 'A'], ['key' => 'a', 'value' => 'n']]]
InformationsquelleAutor mr1031011
Noch eine Idee:
InformationsquelleAutor Eugene Fedorenko