Hallo,
wie kann man Schleifen verschachteln, wenn man nicht vorher weiß, wie viele Ebenen es gibt? Wenn man es vorher weiß, ist es ja kein Problem.
Beispiel:
Es gibt zwei Arrays, $farben und $groessen. Nun soll für jede mögliche Kombination ein Preis angegeben werden können.
Der Benutzer hat aber die Möglichkeit, noch weitere Variationen anzulegen, z. B. Zustand oder Ausführung oder was weiß ich.
Wenn der Benutzer also noch 5 weitere Variationen anlegt, müssen folglich insgesamt 7 Schleifen ineinander verschachtelt werden.
Wie löst man sowas? Meine einzige bisher mögliche Lösung ist, die Variationen auf z. B. max. 20 zu begrenzen. Anschließend 20 ineinander verschachtelte Schleifen zu bauen, wobei vor jeder abgefragt wird, ob für sie überhaupt werte vorliegen. Also so:
Aber das ist wohl die hässlichste Lösung, die es gibt. Kann mir jemand auf die Sprünge helfen?
Schöne Grüße,
pb
wie kann man Schleifen verschachteln, wenn man nicht vorher weiß, wie viele Ebenen es gibt? Wenn man es vorher weiß, ist es ja kein Problem.
Beispiel:
Es gibt zwei Arrays, $farben und $groessen. Nun soll für jede mögliche Kombination ein Preis angegeben werden können.
PHP-Code:
foreach ($farben as $farbkey=>$farbwert) {
foreach ($groessen as $grokey=>$growert) {
echo $farbwert.' - '.$growert;
}
}
Wenn der Benutzer also noch 5 weitere Variationen anlegt, müssen folglich insgesamt 7 Schleifen ineinander verschachtelt werden.
Wie löst man sowas? Meine einzige bisher mögliche Lösung ist, die Variationen auf z. B. max. 20 zu begrenzen. Anschließend 20 ineinander verschachtelte Schleifen zu bauen, wobei vor jeder abgefragt wird, ob für sie überhaupt werte vorliegen. Also so:
PHP-Code:
# Dynamische Generierung aus DB-Werten, die vom Benutzer erstellt wurden
$varianten[1]=array('S','M','L');
$varianten[2]=array('blau','rot','grün');
$varianten[3]=array('neu','gebraucht');
# Schleifen
if ($varianten[1]) {
foreach($varianten[1] as $x=>$y) {
if ($varianten[2]) {
foreach($varianten[2] as $a=>$b) {
if ($varianten[3]) {
...
Schöne Grüße,
pb
Kommentar