Probleme mit foreach und zweidimensionalen Array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit foreach und zweidimensionalen Array

    Hallo Leute,
    Ich habe ein Problem mit unten stehendem Quelltext,
    unzwar sagt das zweite foreach unter dem Kommentar
    Submenü anzeigen immer das der übergebene
    Parameter ungülitg wäre, wie kann ich ansonsen ein zweidimensionales Array durchlaufen lassen ?
    Ich habe es schon mit
    PHP-Code:
    foreach($option['pics'] as $key => $value){..... 
    probiert, allerdings ohne erfolg.
    Wäre toll wenn ihr mir helfen könntet.
    Gruß
    Till
    PHP-Code:
    <?
    session_start();

    ///////////////////////////////
    //Mögliche Optionen
    $option['pics']='Bildergalerie';
    ///////////////////////////////
    //Mögliche Unteroption
    $option['pics']['uploadpics']='Bilder hochladen';
    $option['pics']['deletepics']='Bilder löschen';
    ////////////////////////////////
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Unbenanntes Dokument</title>
    </head>
    <body>
    <?
    ////////////////////////////////////////////////////
    //GET bzw. POST Variablen werden hier in SESSION geschrieben
    movesession('menu','get');

    function movesession($tomove,$method){
    if($method=='post'){
        if($_POST[$tomove]!=''){
            $_SESSION[$tomove]=$_POST[$tomove];
            }
        }
    elseif($method=='get'){
        if($_GET[$tomove]!=''){
            $_SESSION[$tomove]=$_GET[$tomove];
            }
        }
    }
    ?>
    <div id='Layer1' style='position:absolute; width:551px; height:50px; z-index:1'>
    <?
    //Menü anzeigen
    foreach($option as $key => $value){
    echo"<a href='".$_SERVER['PHP_SELF']."?menu=".$key."&".session_name()."=".session_id()."'>".$value."</a>";
    }
    //Submenü anzeigen
    if(isset($_SESSION['menu'])){
        foreach($option as $suboption){
            foreach($suboption as $key => $value){
                echo"<a href='".$_SERVER['PHP_SELF']."?submenu=".$key."&".session_name()."=".session_id()."'>".$value."</a>";
            }
        }
    }
    ?>
    </div>
    <div id="Layer2" style="position:absolute; width:550px; height:287px; z-index:2; top: 75px;">

    </div>

    </body>
    </html>

  • #2
    so ein print_r($option) wäre schon praktisch...

    Kommentar


    • #3
      print_r
      gibt folgendes aus
      Array ( [pics] => Bildergalerie )

      komisch, normal müsst es doch mehr anzeigen, oder ?

      Kommentar


      • #4
        die initialisierungsphase ergibt auch nicht so viel sinn..
        sorge erst mal dafür, dass du das array richtig aufbaust.

        Kommentar


        • #5
          So ich habs geschaftt
          Ich habs jetzt so gemacht,
          sieht sogar noch übersichtlicher aus als

          PHP-Code:
          //Mögliche Optionen
          $option['pics']='Bildergalerie';
          ///////////////////////////////
          //Mögliche Unteroption
          $option['pics']['uploadpics']='Bilder hochladen';
          $option['pics']['deletepics']='Bilder löschen';
          //////////////////////////////// 

          PHP-Code:
          $option = array(
              
          "pics" => array (
                  
          "uploadpics" => "Bilder hochladen",
                  
          "deletepics" => "Bilder löschen"
                  
          )
              ); 

          Kommentar


          • #6
            Bemerkenswert ist folgendes: der zweite Befehl im folgenden ist ohne Fehlermeldung unwirksam
            (und führte zur foreach-Frage):
            PHP-Code:
            $option['pics']='Bildergalerie';
            $option['pics']['uploadpics']='Bilder hochladen'
            zum gelösten Problem glaube ich, dass jetzt auf Stufe 'Menü' eine Unschönheit auftritt, zB dass nicht
            mehr der Name 'Bildergalerie', sondern der Name 'array' angezeigt wird.

            Kommentar


            • #7
              Die Unschönheit hab ich behoben, indem
              ich dem ersten Feld des zweidim. Array den Wert Bildergalerie
              gegeben habe.

              PHP-Code:
              $option = array(
                  
              "pics" => array (
                      
              "menuname"     =>    "Bildergalerie",
                      
              "uploadpics" => "Bilder hochladen",
                      
              "deletepics" => "Bilder löschen"
                      
              )
                  ); 
              Und so funktioniert das auslesen
              PHP-Code:
              if(isset($_SESSION['menu'])){
                  foreach(
              $option as $key => $suboption){
                      if(
              $_SESSION['menu']==$key){
                          foreach(
              $suboption as $subkey => $value){
                              if(
              $subkey != 'menuname'){
                                  echo
              "<a href='".$_SERVER['PHP_SELF']."?action=".$subkey."&".session_name()."=".session_id()."'>".$value."</a>\n<br>\n";
                              }
                          }
                      }
                  }

              Kommentar

              Lädt...
              X