Rüdiger: Verschachtelte foreach-schleifen

hallo zusammen

ich habe ein problem mit verschachtelten foreach-schleifen.
mein ergebnis array aus der DB sieht so aus:
Array
(  [1] => Array
        (   [bla1] => 1
            [bla2] => text
            [bla3] => text
            [bla4] => Array
                (  [4] => Array
                        (   [NR] => 4
                            [bla1] => text
                            [bla2] => text
                            [bla3] => text )
                    [19] => Array
                        (   [NR] => 19
                            [bla1] => text
                            [bla2] => text
                            [bla3] => text  ))
            [bla5] => Array
                (  [1] => Array
                        (   [NR] => 1
                            [ja] => 1
                            [nein] => 0 )
                    [12] => Array
                        (   [NR] => 12
                            [ja] => 0
                            [nein] => 1 ) )
             [bla6] => Array
                (   [NR] => 4
                    [bla1] => text
                    [bla2] => text
                    [bla3] => text
                    [bla4] => text )
        )
   nächstes array
   [1] => Array
   nächstes array
   usw.
)

die foreach-schleife sieht so aus:

foreach($_SESSION['ausgabe'] as $key){
        echo "<br>expnr: ".$key['bla1'];
        echo "<br>expnr: ".$key['bla2'];
        echo "<br>expnr: ".$key['bla3'];
        if(isset($key['bla4'])){
           foreach($key['bla4'] as $key){
                   printf("NR = %s",$key['NR']);
                   printf("%s %s %s",$key['bla1'], $key['bla2'], $key['bla3']);
                  }
          }
        if(isset($key['bla5'])){
           foreach($key['bla5'] as $key){
                  if($key['ja'] == 1){
                      printf("<br>ja: NR = %s",$key['NR']);
                     }
                 if($key['nein'] == 1){
                      printf("<br>nein: NR = %s<br>",$key['NR']);
                     }
                  }
            }

printf("%s %s %s %s<br><br><br>",$key['bla6']['NR'],$key['bla6']['bla1'],['bla6']['bla2'],$key['bla6']['bla3']);

}

jetzt meine frage:
warum wird mir nach der ersten foreach-schleife [bla4], [bla5] und [bla6] nicht mehr ausgegeben?
kommentiere ich die foreach-schleife [bla4] aus, wird [bla5] ausgeführt aber [bla6] nicht angezeigt.
wenn ich beide foreach-schleifen auskommentiere wird mir [bla6] aber angezeigt.
ich durchlaufe doch das array von [bla1] bis [bla6] der reihe nach, ich versteh das nicht.

bitte um hilfe

vielen dank im voraus für eure mühe
gruß Rüdiger

  1. Hallo Rüdiger,

    foreach($_SESSION['ausgabe'] as $key){
    [...]
               foreach($key['bla5'] as $key){

    Du darfst nicht zweimal die gleichen Variablen verwenden (sonst überschreibst du die erste, und $key['bla5'] existiert nicht mehr) - verwende einfach eine andere Variable ...

    Grüße aus Nürnberg
    Tobias

    1. hallo Tobias

      vielen dank für die schnelle hilfe :-)
      da hab ich den wald vor lauter bäume nicht gesehen :-(

      gruß Rüdiger