Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich das kartesische Produkt mehrerer Arrays in PHP generieren und dabei Wiederholungen vermeiden?

Wie kann ich das kartesische Produkt mehrerer Arrays in PHP generieren und dabei Wiederholungen vermeiden?

DDD
Freigeben: 2024-11-26 03:19:09
Original
235 Leute haben es durchsucht

How can I generate the Cartesian product of multiple arrays in PHP while eliminating repetitions?

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

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

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
        )

)
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage