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

Wie erzeuge ich kartesische Produkte mehrerer Arrays in PHP?

Patricia Arquette
Freigeben: 2024-11-15 14:03:03
Original
248 Leute haben es durchsucht

How to Generate Cartesian Products of Multiple Arrays in PHP?

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

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

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

Das in $cross gespeicherte Ergebnis ist ein Array mit allen möglichen Kombinationen:

print_r($cross);
Nach dem Login kopieren

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

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!

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