Probleme mit foreach und zweidimensionalen Array

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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...

    Comment


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

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

      Comment


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

        Comment


        • #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"
                  
          )
              ); 

          Comment


          • #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.

            Comment


            • #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";
                              }
                          }
                      }
                  }

              Comment

              Working...
              X