Heim > Backend-Entwicklung > PHP-Tutorial > Wie generiert man alle Kombinationen aus mehreren Arrays in PHP rekursiv?

Wie generiert man alle Kombinationen aus mehreren Arrays in PHP rekursiv?

Linda Hamilton
Freigeben: 2024-12-14 02:09:10
Original
817 Leute haben es durchsucht

How to Generate All Combinations from Multiple Arrays in PHP Recursively?

Kombinationen aus mehreren Arrays in PHP generieren

Einführung

Die Aufgabe, alle Kombinationen zu generieren von Elementen aus mehreren Arrays tritt häufig bei kombinatorischen Optimierungsproblemen auf. Dieser Artikel stellt eine rekursive Lösung vor, die den Bedarf an einer Funktion berücksichtigt, die eine variable Anzahl von Quellarrays verarbeiten kann.

Problemstellung

Gegeben sind mehrere Arrays mit unterschiedlicher Anzahl von Elemente: Finden Sie alle Kombinationen von Elementen, wobei die Anzahl der Kombinationen dem Produkt der Anzahl der Elemente in jedem Array entspricht. Zum Beispiel anhand der folgenden Arrays:

$arrayA = array('A1','A2','A3');
$arrayB = array('B1','B2','B3');
$arrayC = array('C1','C2');
Nach dem Login kopieren

Unser Ziel ist es, ein Array mit 18 Kombinationen zu generieren:

[
    ['A1', 'B1', 'C1'],
    ['A1', 'B1', 'C2'],
    ['A1', 'B2', 'C1'],
    ...
]
Nach dem Login kopieren

Rekursive Lösung

Die folgende rekursive Funktion generiert alle möglichen Kombinationen von Elemente:

function combinations($arrays, $i = 0) {
    // If reaching the last array, return the array itself
    if (!isset($arrays[$i])) {
        return array();
    }
    
    // If at the parent array, return the recursive call to the following array
    if ($i == count($arrays) - 1) {
        return $arrays[$i];
    }
    
    // Get combinations from subsequent arrays
    $tmp = combinations($arrays, $i + 1);

    $result = array();

    // Concatenate each array from tmp with each element from $arrays[$i]
    foreach ($arrays[$i] as $v) {
        foreach ($tmp as $t) {
            $result[] = is_array($t) ? 
                array_merge(array($v), $t) :
                array($v, $t);
        }
    }
    
    return $result;
}
Nach dem Login kopieren

Demonstration

Der folgende Code demonstriert die Verwendung der Kombinationsfunktion:

print_r(
    combinations(
        array(
            array('A1','A2','A3'), 
            array('B1','B2','B3'), 
            array('C1','C2')
        )
    )
);
Nach dem Login kopieren

Dadurch wird das erwartete Array ausgegeben aus 18 Kombinationen.

Das obige ist der detaillierte Inhalt vonWie generiert man alle Kombinationen aus mehreren Arrays in PHP rekursiv?. 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