Heim > Backend-Entwicklung > PHP-Tutorial > Wie erzeuge ich das kartesische Produkt mehrerer Arrays in PHP?

Wie erzeuge ich das kartesische Produkt mehrerer Arrays in PHP?

Patricia Arquette
Freigeben: 2024-11-12 10:40:02
Original
953 Leute haben es durchsucht

How to Generate the Cartesian Product of Multiple Arrays in PHP?

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';
Nach dem Login kopieren

Wir erwarten, dass die Ausgabe wie folgt aussieht:

Array 0            Array 1
apples             steve
apples             bob
pears              steve
pears              bob
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
        )
)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage