PHP: Wie bekomme ich alle möglichen Kombinationen von 1D-Arrays? [duplicate]

Lesezeit: 3 Minuten

PHP Wie bekomme ich alle moglichen Kombinationen von 1D Arrays duplicate
böseReiko

Mögliches Duplikat:

Algorithmus, der Zahlen oder Wörter nimmt und alle möglichen Kombinationen findet
Kombinationen, Dispositionen und Permutationen in PHP

Ich habe viele der vorgeschlagenen Antworten auf SO gelesen/ausprobiert, von denen keine das Problem löst

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

Wie bekomme ich alle möglichen Kombinationen?

Erwartete Ausgabe:

array('Alpha',
      'Beta',
      'Gamma',
      'Alpha Beta',
      'Alpha Gamma',
      'Beta Alpha',
      'Beta Gamma',
      'Gamma Alpha',
      'Gamma Beta',
      'Alpha Beta Gamma',
      'Alpha Gamma Beta',
      'Beta Alpha Gamma',
      'Beta Gamma Alpha',
      'Gamma Alpha Beta',
      'Gamma Beta Alpha')

Hinweis: Die Antwort, nach der ich suche, sollte enthalten alle Kombinationen und alle unterschiedlichen Anordnungen. Zum Beispiel: ‘Alpha Beta’ und ‘Beta-Alpha’ sind 2 verschiedene Strings und beide sollten im Ausgabearray sein.

Vielen Dank im Voraus

  • @Juhana OP will auch einzelne Worte

    – Gut

    31. Mai 2012 um 13:23 Uhr

  • Können Sie das Array explodieren lassen, ein foreach zusammen mit der Gesamtzahl verwenden und sie durchlaufen?

    – Drewdin

    31. Mai 2012 um 13:26 Uhr

  • @Juhana plz schließe die Frage nicht, andere Fragen könnten ähnlich sein, aber nicht gleich

    – böseReiko

    31. Mai 2012 um 13:30 Uhr

  • Was genau hat bei deinen Versuchen nicht funktioniert? Da könntest du anfangen.

    – Nadir Sampaoli

    31. Mai 2012 um 13:31 Uhr

  • @evilReiko Das Duplikat hat keine wiederholten Elemente.

    – JJJ

    31. Mai 2012 um 13:31 Uhr

PHP Wie bekomme ich alle moglichen Kombinationen von 1D Arrays duplicate
abcde123483

Ich glaube, Ihr Professor wird mit dieser Lösung zufriedener sein:

<?php

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

function depth_picker($arr, $temp_string, &$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);

?>

Das löst es:

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
)

  • Ich weiß, dass meine Frage wie eine Hausaufgabe klingt, aber das ist sie nicht! LOL! Ich weiß, dass sich die Lösung in der Rekursion verbirgt, aber ich bin überhaupt nicht gut darin. Perfekte Antwort, eine Medaille wert!

    – böseReiko

    31. Mai 2012 um 17:17 Uhr

  • Danke Broseph bedeutet mir sehr viel. Darf ich fragen, wofür es verwendet wird, wenn nicht für Hausaufgaben :)?

    – abcde123483

    2. Juni 2012 um 18:09 Uhr

  • Dieser Code ist der Schlüssel zur Verbesserung der Suchmaschine meiner Website, sodass sie dem Benutzer “vertraute” Schlüsselwörter vorschlagen kann

    – böseReiko

    3. Juni 2012 um 7:41 Uhr

  • Sie könnten Ihre Funktion leicht verbessern, indem Sie temp_string zu einem optionalen Parameter machen.

    – Adavea

    14. Oktober 2013 um 23:43 Uhr

  • ich habe Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 33554440 bytes)->3v4l.org/iUCk4

    – Anant Kumar Singh

    16. Oktober 2019 um 5:50 Uhr

958940cookie-checkPHP: Wie bekomme ich alle möglichen Kombinationen von 1D-Arrays? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy