Moin!
ich habe ein großes Problem, das ich langsam nicht mehr durchblicke. Und zwar muß ich die Werte eines zweidimensionalen Arrays vollständig durchkombinieren, also eine Permutation durchführen.
Du willst alle Möglichkeiten der ersten Gruppe mit allen Möglichkeiten der zweiten Gruppe mit allen Möglichkeiten der dritten Gruppe mit allen Möglichkeiten der vierten Gruppe.... kombiniert haben.
Lösung: Verschachtelte FOREACH-Schleifen für jede einzelne Gruppe.
Erste Gruppe:
$feld[0]['gueltig'][0] = 1;
$feld[0]['gueltig'][1] = 2;
$feld[0]['gueltig'][2] = 3;
Basis-Variable ist $feld[0]['gueltig'].
Zweite Gruppe:
$feld[1]['gueltig'][0] = "ab";
$feld[1]['gueltig'][1] = "cd";
$feld[1]['gueltig'][2] = "ef";
$feld[1]['gueltig'][3] = "gh";
Basis-Variable ist $feld[1]['gueltig'].
Dritte Gruppe:
$feld[2]['gueltig'][0] = "1g";
Basisvariable ist $feld[2]['gueltig'].
Vierte Gruppe:
$feld[3]['gueltig'][0] = "test1";
$feld[3]['gueltig'][1] = "test2";
$feld[3]['gueltig'][2] = "test3";
Basisvariable ist $feld[3]['gueltig'].
Die Werte sollen nun so kombiniert werden, daß ein Textstrings etwa in der Art herauskommt:
Nimm den ersten Wert aus der ersten Gruppe, den ersten Wert aus der zweiten Gruppe, den ersten Wert aus der dritten Gruppe und den ersten Wert aus der vierten Gruppe.
Nimm den ersten Wert aus der ersten Gruppe, den ersten Wert aus der zweiten Gruppe, den ersten Wert aus der dritten Gruppe und den ZWEITEN Wert aus der vierten Gruppe.
Nimm den ersten Wert aus der ersten Gruppe, den ersten Wert aus der zweiten Gruppe, den ersten Wert aus der dritten Gruppe und den DRITTEN Wert aus der vierten Gruppe.
Jetzt gibts in der vierten Gruppe keinen weiteren Wert, also wird in der dritten Gruppe eins weitergerückt, und in der vierten Gruppe wieder von vorn begonnen:
Nimm den ersten Wert aus der ersten Gruppe, den ersten Wert aus der zweiten Gruppe, den ZWEITEN Wert aus der dritten Gruppe ... halt!
Hm. Blöd, dass die dritte Gruppe auch nur einen Wert hat, bedeutet also, dass die zweite Gruppe schon dran ist mit weiterzählen, die dritte Gruppe bleibt also beim ersten Wert.
Nimm den ersten Wert aus der ersten Gruppe, den ZWEITEN Wert aus der zweiten Gruppe, den ersten Wert aus der dritten Gruppe und den ERSTEN Wert aus der vierten Gruppe.
foreach ($feld[0]['gueltig'] as $gruppe1) {
foreach ($feld[1]['gueltig'] as $gruppe2) {
foreach ($feld[2]['gueltig'] as $gruppe3) {
foreach ($feld[3]['gueltig'] as $gruppe4) {
echo $gruppe1 . $gruppe2 . $gruppe3 . $gruppe4;
}
}
}
}
Ich hoffe, du erkennst die Regelmäßigkeiten.
- Sven Rautenberg
"Love your nation - respect the others."