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
Patricia ArquetteOriginal
2024-11-15 14:03:03250Durchsuche

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';

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;
}

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')
);

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

print_r($cross);

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
    )
)

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!

Stellungnahme:
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