Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich in PHP alle Kombinationen von Elementen aus mehreren Arrays generieren?
Generieren aller Kombinationen von Elementen in mehreren Arrays in PHP
Die Aufgabe, alle Kombinationen von Elementen in mehreren Arrays zu finden, tritt bei der Programmierung häufig auf . Die Anzahl der Arrays und Elemente innerhalb jedes Arrays kann variieren.
Rekursive Lösung
Ein rekursiver Ansatz kann dieses Problem effektiv lösen. Die Funktion „kombinationen()“ bietet eine Lösung:
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; }
Beispielverwendung
Betrachten Sie die Arrays:
$arrayA = array('A1','A2','A3'); $arrayB = array('B1','B2','B3'); $arrayC = array('C1','C2');
Um alle zu finden Kombinationen:
print_r(combinations(array($arrayA, $arrayB, $arrayC)));
Ausgabe:
Array ( [0] => A1 [1] => B1 [2] => C1 [3] => A1 [4] => B1 [5] => C2 [6] => A1 [7] => B2 [8] => C1 [9] => A1 [10] => B2 [11] => C2 [12] => A1 [13] => B3 [14] => C1 [15] => A1 [16] => B3 [17] => C2 [18] => A2 [19] => B1 [20] => C1 [21] => A2 [22] => B1 [23] => C2 [24] => A2 [25] => B2 [26] => C1 [27] => A2 [28] => B2 [29] => C2 [30] => A2 [31] => B3 [32] => C1 [33] => A2 [34] => B3 [35] => C2 [36] => A3 [37] => B1 [38] => C1 [39] => A3 [40] => B1 [41] => C2 [42] => A3 [43] => B2 [44] => C1 [45] => A3 [46] => B2 [47] => C2 [48] => A3 [49] => B3 [50] => C1 [51] => A3 [52] => B3 [53] => C2 )
Diese Lösung stellt alle möglichen Kombinationen auf effiziente Weise bereit.
Das obige ist der detaillierte Inhalt vonWie kann ich in PHP alle Kombinationen von Elementen aus mehreren Arrays generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!