oliver: Rekursives Zusammenführen eines zweidimensionalen Arrays

Für jede Hilfe bin ich sehr dankbar!
Mein Problem ist folgendes:

Gegeben ist ein Array mit 0 bis ca. 5 Feldern, in denen
je wiederum ein Array mit 1 bis ca. 20.000 Feldern die mit
Stringwerten gefüllt sind, enthalten sind.

Das Resultat soll ein Array sein, das alle Kombinationsmöglichkeiten
der Strings enthält, z.B. bei dem Ausgangsarray
Array (
   [0] => Array ( [0] => A [1] => B )
   [1] => Array ( [0] => H )
   [2] => Array ( [0] => X [1] => Y [2] => Z )
)
Sollte das Ergebnis so aussehen:
Array (
   [0] => AHX
   [1] => AHY
   [2] => AHZ
   [3] => BHX
   [4] => BHY
   [5] => BHZ
)
Die Reihenfolge der Ergebnisse ist dabei unwichtig, es
sollen halt alle Kombinationsmöglichkeiten je einmal enthalten
sein.

Wie muss eine Funktion zur rekursiven Lösung dieser
Aufgabe aufgebaut sein? Oder gehts auch ohne Rekursion?
Wie lässt sich das ganze realisieren?

Vielen Dank!!!

  1. Holladiewaldfee,

    Die Reihenfolge der Ergebnisse ist dabei unwichtig, es
    sollen halt alle Kombinationsmöglichkeiten je einmal enthalten
    sein.

    $erg = array_unique(rec_merge(&$gegeben, 0));

    function rec_merge(&$ar, $startidx)
    { if(count($ar)-1>$startidx)
       $erg = rec_merge(&$ar, $startidx+1);
      else
       return $ar[$startidx];

    $work = array();
      for($i=0, $j=count($ar[$startidx]); $i<$j; $i++)
      { for($k=0, $l=count($erg); $k<$l; $k++)
         $work[] = $ar[$startidx][$i].$erg[$k]; }

    return $work;
    }

    Ist ungetestet.

    Ciao,

    Harry

    --
      Intelligenz ist nicht zwingend etwas positives.
      Man weiß erst, was man hatte, wenn man es verloren hat.
    1. Hi Harry!

      Vielen Dank, sieht schonmal so komliziert aus, das es funktionieren könnte... *grins*

      werd ich direkt mal ausprobieren

      DANK DIR!

      gruß oliver

    2. Hallo Harry,

      Perfekt!!! Wunderbar, funktioniert aufs beste *jubilier*
      ich küss dir die füsse *uiäk* nee, das lass ich doch lieber,
      tja dann:

      ************************
      * DANKE !!! GENIAL !!! *
      ************************

      (und, wenn du zufällig auf jobsuche sein solltest, wende dich
      an danielknecht@lycos.de sojemand stellen wir sofort ein *grins*)

      ciao oliver

      1. Holladiewaldfee,

        ************************
        * DANKE !!! GENIAL !!! *
        ************************

        *rotwerd* Danke :)

        Ich bin mir aber ziemlich sicher, daß Du das Problem auch iterativ lösen kannst mit 2 oder 3 verschachtelten Schleifen. Bin aber grade zu faul, drüber nachzudenken, muß nämlich nebenbei Experimentalphysik lernen *g*

        Ciao,

        Harry

        --
          Intelligenz ist nicht zwingend etwas positives.
          Man weiß erst, was man hatte, wenn man es verloren hat.