Alle möglichen Kombinationen auflisten lassen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Alle möglichen Kombinationen auflisten lassen

    Hallo,
    ich möchte alle möglichen Kombination auflisten lassen.

    meine Lösung funktioniert leider aber noch nicht:
    PHP-Code:

    $finalnumber 
    ;
    $kombinationen = Array();
    $input = Array("eins""zwei""drei");
    $anzahl_an_kombinationen 0;

    while(
    $anzahl_an_kombinationen != $finalnumber)
     {
       
    $neue_kombination_temp shuffle($input);
       
    $neue_kombination $neue_kombination_temp[0];
       for(
    $i=1$i<count($input); $i++)
        {
         
    $neue_kombination .= $neue_kombination_temp[$i];
        }
        
       if(!
    in_array($neue_kombination$kombinationen))
        {
        
    $kombinationen[] = $neue_kombination;
        } 
       
    $anzahl_an_kombinationen count($kombinationen);
       echo 
    $neue_kombination."<br>";
     } 
    Vielleicht kann mir ja jemand ein wenig weiterhelfen.

  • #2
    1. Aus dem Array bekommst du maximal 6 einzigartige Kombinationen, nicht 9.
    2. shuffle() gibt einen boolschen Wert zurück, keinen Array.
    3. Ist deine Lösung nicht sonderlich perfpormant. Bei großen Array könnte er theoretisch shuffle aufrufen, bis er schwarz wird, und nie oder erst nach Stunden zu einem gültigen letzten Wert kommen. Besser wäre es, du schreibst die Funktion so um, das sie ohne Raten auskommt und direkt auf das Ziel hinarbeitet, das du brauchst.

    Kommentar


    • #3
      Was heisst «alle möglichen Kombination»? Kombinationen von den Elementen eines Arrays mit sich selber? Oder von zwei oder mehreren, verschiedenen Arrays? Wieviele Elemente umfasst eine Kombination? Soviele wie Arrays beteiligt sind? Ist die Kombination A - B unterschiedlich zu B - A? etc?
      All diese Fragen lassen sich weder aus deiner Problembeschreibung, noch aus deinem Code beantworten. Letzterer produziert nur einen Endlos-Loop, ohne etwas auszugeben. Den Grund hat dir bla$ter ja schon genannt.
      Gruss
      H2O

      Kommentar


      • #4
        Sehe ich das richtig, dass du alle dreistelligen Kombis des Ausgangsarrays haben willst (inkl Wiederholungen)?
        Falls ja dann mach doch einfach 3 verschachtelte foreach-Schleifen
        PHP-Code:
        $werte = array('eins','zwei','drei');
        $kombi = array();
        foreach(
        $werte as $wert){
          foreach(
        $werte as $value){
            foreach(
        $werte as $val){
              
        $kombi[] = "$wert $value $val";
            }
          }

        Ergibt bei mir die gesuchten 3^3 Kombis
        http://tobisworld.ch/misc/test/test.php
        Sicherlich nicht sonderlich performant, aber dafür schnell geschrieben

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          @jahlives

          mache aus ...
          PHP-Code:
          echo '</pre>';
          $code file_get_contents('test.php');
          echo 
          '<pre>';
          highlight_string($code);
          echo 
          '</pre>'
          ... die kurzversion ...

          PHP-Code:
          show_source(__FILE__); 


          show_source
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            ... die kurzversion ...
            Hier lernt man ja wirklich nie aus...

            Danke und Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              danke jalinev

              klappt hervoragend

              Kommentar

              Lädt...
              X