Kartesische Produkte mehrerer Arrays in PHP erstellen
Betrachten Sie eine PHP-Array-Struktur wie die folgende:
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
Ziel: Erstellen einer tabellarischen Liste aller möglichen Kombinationen von Elementen aus diesen Arrays ohne Duplizierung.
Lösung:
Das Konzept, alle möglichen Kombinationen aus mehreren Arrays zu generieren, ist als „kartesisch“ bekannt Produkt." Es gibt mehrere Methoden, um dies in PHP zu erreichen.
Ein Ansatz besteht darin, die Array-Funktionen von PHP zu nutzen. Der folgende Codeausschnitt implementiert das kartesische Produkt mithilfe von func_get_args() und Rekursion:
function array_cartesian() { $_ = func_get_args(); if(count($_) == 0) return array(array()); $a = array_shift($_); $c = call_user_func_array(__FUNCTION__, $_); $r = array(); foreach($a as $v) foreach($c as $p) $r[] = array_merge(array($v), $p); return $r; }
Um diese Funktion zu verwenden, übergeben Sie eine beliebige Anzahl von Arrays als Argumente. Um beispielsweise das kartesische Produkt der oben genannten Arrays zu generieren:
$cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') );
Das in $cross gespeicherte Ergebnis ist ein Array mit allen möglichen Kombinationen:
print_r($cross);
Ausgabe:
Array ( [0] => Array ( [0] => apples [1] => steve ) [1] => Array ( [0] => apples [1] => bob ) [2] => Array ( [0] => pears [1] => steve ) [3] => Array ( [0] => pears [1] => bob ) )
Das obige ist der detaillierte Inhalt vonWie erzeuge ich kartesische Produkte mehrerer Arrays in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!