Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in PHP alle möglichen Kombinationen und Permutationen von Elementen innerhalb eines eindimensionalen Arrays generieren?

Wie kann ich in PHP alle möglichen Kombinationen und Permutationen von Elementen innerhalb eines eindimensionalen Arrays generieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 19:45:30950Durchsuche

How can I generate all possible combinations and permutations of elements within a one-dimensional array in PHP?

PHP: So erhalten Sie alle möglichen Kombinationen eines eindimensionalen Arrays

In diesem Artikel befassen wir uns mit einer Methode zum Abrufen aller möglichen Kombinationen von Elementen darin ein eindimensionales Array in PHP. Im Gegensatz zu anderen Lösungen stellt dieser Ansatz sicher, dass sowohl Kombinationen als auch Permutationen berücksichtigt werden.

Problemstellung

Angesichts eines Arrays von Zeichenfolgen oder Zahlen besteht das Ziel darin, alle möglichen Kombinationen von Elementen zu generieren. unter Berücksichtigung unterschiedlicher Vereinbarungen. Beispielsweise sind „Alpha Beta“ und „Beta Alpha“ unterschiedliche Kombinationen, die in der Ausgabe enthalten sein sollten.

PHP-Lösung

Die bereitgestellte PHP-Lösung verwendet einen rekursiven Tiefensuchalgorithmus:

<code class="php"><?php

$array = array('Alpha', 'Beta', 'Gamma', 'Sigma');

function depth_picker($arr, $temp_string, &amp;$collect) {
    if ($temp_string != "") 
        $collect []= $temp_string;

    for ($i=0, $iMax = sizeof($arr); $i < $iMax; $i++) {
        $arrcopy = $arr;
        $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
        if (sizeof($arrcopy) > 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }   
    }   
}

$collect = array();
depth_picker($array, "", $collect);
print_r($collect);

?></code>

Aufschlüsselung der Lösung

  • Die Funktion „deep_picker“ wird mit dem anfänglichen Array, einer leeren Zeichenfolge und einer leeren Array-Referenz aufgerufen.
  • Sie erfolgt rekursiv durchläuft das Array und fügt jedes Element am Ende der aktuellen Ergebniszeichenfolge hinzu.
  • Immer wenn die temporäre Zeichenfolge Elemente enthält, wird sie zum Ergebnisarray hinzugefügt.
  • Wenn noch Elemente übrig sind Im Eingabearray ruft sich die Funktion selbst mit dem aktualisierten Array und der temporären Zeichenfolge auf.
  • Wenn keine Elemente mehr übrig sind, wird die temporäre Zeichenfolge mit der vollständigen Kombination zum Sammelarray hinzugefügt.

Ausgabe

Der bereitgestellte Code erzeugt die folgende Ausgabe, die alle Kombinationen und Permutationen der Elemente im angegebenen Array enthält:

Array
(
    [0] =>  Alpha
    [1] =>  Alpha Beta
    [2] =>  Alpha Beta Gamma
    [3] =>  Alpha Beta Gamma Sigma
    [4] =>  Alpha Beta Sigma
    [5] =>  Alpha Beta Sigma Gamma
    [6] =>  Alpha Gamma
    [7] =>  Alpha Gamma Beta
    [8] =>  Alpha Gamma Beta Sigma
    [9] =>  Alpha Gamma Sigma
    [10] =>  Alpha Gamma Sigma Beta
    [11] =>  Alpha Sigma
    [12] =>  Alpha Sigma Beta
    [13] =>  Alpha Sigma Beta Gamma
    [14] =>  Alpha Sigma Gamma
    [15] =>  Alpha Sigma Gamma Beta
    [16] =>  Beta
    [17] =>  Beta Alpha
    [18] =>  Beta Alpha Gamma
    [19] =>  Beta Alpha Gamma Sigma
    [20] =>  Beta Alpha Sigma
    [21] =>  Beta Alpha Sigma Gamma
    [22] =>  Beta Gamma
    [23] =>  Beta Gamma Alpha
    [24] =>  Beta Gamma Alpha Sigma
    [25] =>  Beta Gamma Sigma
    [26] =>  Beta Gamma Sigma Alpha
    [27] =>  Beta Sigma
    [28] =>  Beta Sigma Alpha
    [29] =>  Beta Sigma Alpha Gamma
    [30] =>  Beta Sigma Gamma
    [31] =>  Beta Sigma Gamma Alpha
    [32] =>  Gamma
    [33] =>  Gamma Alpha
    [34] =>  Gamma Alpha Beta
    [35] =>  Gamma Alpha Beta Sigma
    [36] =>  Gamma Alpha Sigma
    [37] =>  Gamma Alpha Sigma Beta
    [38] =>  Gamma Beta
    [39] =>  Gamma Beta Alpha
    [40] =>  Gamma Beta Alpha Sigma
    [41] =>  Gamma Beta Sigma
    [42] =>  Gamma Beta Sigma Alpha
    [43] =>  Gamma Sigma
    [44] =>  Gamma Sigma Alpha
    [45] =>  Gamma Sigma Alpha Beta
    [46] =>  Gamma Sigma Beta
    [47] =>  Gamma Sigma Beta Alpha
    [48] =>  Sigma
    [49] =>  Sigma Alpha
    [50] =>  Sigma Alpha Beta
    [51] =>  Sigma Alpha Beta Gamma
    [52] =>  Sigma Alpha Gamma
    [53] =>  Sigma Alpha Gamma Beta
    [54] =>  Sigma Beta
    [55] =>  Sigma Beta Alpha
    [56] =>  Sigma Beta Alpha Gamma
    [57] =>  Sigma Beta Gamma
    [58] =>  Sigma Beta Gamma Alpha
    [59] =>  Sigma Gamma
    [60] =>  Sigma Gamma Alpha
    [61] =>  Sigma Gamma Alpha Beta
    [62] =>  Sigma Gamma Beta
    [63] =>  Sigma Gamma Beta Alpha
)

Das obige ist der detaillierte Inhalt vonWie kann ich in PHP alle möglichen Kombinationen und Permutationen von Elementen innerhalb eines eindimensionalen Arrays generieren?. 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