Berechnung des kartesischen Produkts mehrerer Arrays in PHP
Problem:
Gegeben mehrere PHP Arrays, wie können wir ein kartesisches Produkt generieren, das alle möglichen Kombinationen von Elementen aus jedem Array kombiniert, außer Wiederholungen?
Lösung:
Um ein kartesisches Produkt in PHP zu erhalten, können wir eine rekursive Funktion namens array_cartesian definieren. Diese Funktion verwendet ein Array von Eingabearrays als Argumente. Der Basisfall liegt vor, wenn die Anzahl der Arrays Null ist. In diesem Fall wird ein leeres Array innerhalb eines Arrays zurückgegeben. Andernfalls verwendet die Funktion die Funktion array_shift, um das erste Array aus der Liste zu entfernen, und ruft sich dann rekursiv mit den verbleibenden Arrays auf.
Für jedes Element v im ersten Array durchläuft die Funktion jedes Unterarray p im kartesischen Produkt der verbleibenden Arrays. Anschließend wird ein neues Unterarray durch Zusammenführen von v und p erstellt und dieses Unterarray zum resultierenden kartesischen Produkt hinzugefügt.
Beispiel:
Betrachten Sie den folgenden Satz von Arrays:
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
Indem wir diese Arrays an die Funktion array_cartesian übergeben, können wir den kartesischen Wert erhalten Produkt:
$cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') ); print_r($cross);
was die folgende Ausgabe erzeugt:
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 ) [4] => Array ( [0] => oranges [1] => steve ) [5] => Array ( [0] => oranges [1] => bob ) )
Somit generiert die Funktion effektiv alle eindeutigen Kombinationen von Elementen aus den Eingabearrays.
Das obige ist der detaillierte Inhalt vonWie kann ich das kartesische Produkt mehrerer Arrays in PHP generieren und dabei Wiederholungen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!