Erzeugen des kartesischen Produkts mehrerer Arrays in PHP
Einführung:
Das Erzeugen von Kombinationen aus mehreren Arrays ist eine häufige Aufgabe in der Programmierung. Das kartesische Produkt dieser Arrays ist eine Liste aller möglichen Kombinationen von Elementen aus den Eingabearrays.
Problem:
Gegeben ein Array mit mehreren Unterarrays, möchten wir eine Tabelle generieren Enthält alle eindeutigen Kombinationen von Elementen aus diesen Subarrays. Wenn wir zum Beispiel zwei Unterarrays haben:
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
Wir erwarten, dass die Ausgabe wie folgt aussieht:
Array 0 Array 1 apples steve apples bob pears steve pears bob
Lösung: Kartesisches Produkt
Dieses Problem erfordert Berechnen des kartesischen Produkts, das alle möglichen Kombinationen von Elementen aus mehreren Arrays generiert.
Implementierung:
Ein Ansatz zur Berechnung des kartesischen Produkts beinhaltet die Verwendung einer rekursiven Funktion. Hier ist eine Beispielimplementierung:
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; }
Diese Funktion benötigt mehrere Arrays als Eingaben. Es durchläuft das erste Array und kombiniert jedes seiner Elemente mit allen möglichen Kombinationen der verbleibenden Arrays. Das Ergebnis ist eine Liste aller eindeutigen Kombinationen.
Beispiel:
Lassen Sie uns die Lösung auf unser Beispiel anwenden:
$cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') ); print_r($cross);
Dies wird Folgendes ausgeben:
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 ) )
Was unserer erwarteten Ausgabe entspricht.
Das obige ist der detaillierte Inhalt vonWie erzeuge ich das kartesische Produkt mehrerer Arrays in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!