Rekursives Zusammenführen eines zweidimensionalen Arrays
oliver
- php
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!!!
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
Hi Harry!
Vielen Dank, sieht schonmal so komliziert aus, das es funktionieren könnte... *grins*
werd ich direkt mal ausprobieren
DANK DIR!
gruß oliver
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
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