Announcement

Collapse
No announcement yet.

Probleme mit Array

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

  • Probleme mit Array

    Hallo zusammen,
    ich versuche gerade ein Inhaltsverzeichnis zusammenzubasteln, doch leider funktioniert es nicht ganz wie ich will...
    In dem Hauptarray ($inhalt), ist die oberste Ebene gespeichert. Falls eine Seite dann Unterkategorien besitzt, werden diese in einem neuen Array($charts) gespeichert. Der Name dieses Arrays ist der Index der Seite aus der obersten Ebene. Tönt jetzt wahrscheinlich ziemlich kompliziert, ist im Code unten hoffentlich einfacher ersichtlich...
    Dieses Unterverzeichnis sollte dann wieder rekursiv aufgerufen werden.

    Mein Problem ist nun, dass das array $charts nicht mit erkannt wird. Meiner Meinung nach sollte mit $$key als ausgabe Array erscheinen, es erscheint aber $charts...

    Vielen Dank für Eure Bemühungen!

    <PRE>
    $inhalt['home'] = "HOME";
    $inhalt['profile'] = "PROFILE";
    $inhalt['biografie']= "BIOGRAFIE";
    $inhalt['agenda'] = "AGENDA";
    $inhalt['charts'] = "CHARTS";
    $inhalt['links'] = "LINKS";
    $inhalt['gallery'] = "GALLERY";
    $inhalt['guestbook']= "GUESTBOOK";
    $inhalt['email'] = "E-MAIL";
    $inhalt['vinyl'] = "VINYL NEWS";
    $inhalt['party'] = "PARTY NEWS";
    $inhalt['special'] = "SPECIAL DJ'S";

    $charts['ah']= "Aktuelle-Hardies";
    $charts['02h']= "2002-Hardies";
    $charts['01h']= "2001-Hardies";
    $charts['00h']= "2000-Hardies";
    $charts['99']= "1999";
    $charts['rf']= "Remember-Fast";
    $charts['as']= "Aktuelle-Softies";
    $charts['02s']= "2002-Softies";
    $charts['01s']= "2001-Softies";
    $charts['00s']= "2000-Softies";
    $charts['98']= "1998";
    $charts['rs']= "Remember-Slow";

    error_reporting(E_ALL); // alle Fehler anzeigen
    function inhaltsverzeichnis($aktSite, $inhalte, $farbe_aktiv, $farbe_bg, $erste=true) {
    if($erste) {
    echo("<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" width=\"100%\" bgcolor=\"$farbe_bg\">\n");
    }
    foreach($inhalte as $key => $akt) {
    $keyPhp=$key.".php";
    if ($keyPhp==$aktSite) {
    echo("$inhalte ");
    echo("$key ");
    echo("$$key ");
    if (isset($$key)) {
    inhaltsverzeichnis($aktSite, $$key, $farbe_aktiv, $farbe_bg, false);
    }
    else {echo("<tr><td bgcolor=\"$farbe_aktiv\"><a href=\"index.php?site=$keyPhp\">".$akt."</a></td></tr>\n");
    }
    }
    else {
    echo("<tr><td bgcolor=\"$farbe_bg\"><a href=\"index.php?site=$keyPhp\">".$akt."</a></td></tr>\n");
    }
    }
    if($erste) {
    echo("</table>");
    }
    }
    </PRE>

  • #2
    an welcher stelle kommt denn dein array charts in die funktion? ich nehme einmal an, der übergebene parameter $inhalt ist das array $inhalte[] oder?

    warum arbeitest du nicht eigentlich mit einem einzigen, dafür mehrdimensionalen array? so in der form:
    $inhalte['vinyl']['ah']='Aktuelle Hardies';
    $inhalte['vinyl']['02h']='2002-Hardies';
    und durchläufst dieses rekursiv

    Comment


    • #3
      Vielen Dank für die Bemühungen! Ich hab soeben gesehen, das ich die Entities vergessen hab... Hier nochmal korrekt:

      <pre>
      <?PHP
      $inhalt['home'] = "HOME";
      $inhalt['profile'] = "PROFILE";
      $inhalt['biografie']= "BIOGRAFIE";
      $inhalt['agenda'] = "AGENDA";
      $inhalt['charts'] = "CHARTS";
      $inhalt['links'] = "LINKS";
      $inhalt['gallery'] = "GALLERY";
      $inhalt['guestbook']= "GUESTBOOK";
      $inhalt['email'] = "E-MAIL";
      $inhalt['vinyl'] = "VINYL NEWS";
      $inhalt['party'] = "PARTY NEWS";
      $inhalt['special'] = "SPECIAL DJ'S";

      $charts['ah']= "Aktuelle-Hardies";
      $charts['02h']= "2002-Hardies";
      $charts['01h']= "2001-Hardies";
      $charts['00h']= "2000-Hardies";
      $charts['99']= "1999";
      $charts['rf']= "Remember-Fast";
      $charts['as']= "Aktuelle-Softies";
      $charts['02s']= "2002-Softies";
      $charts['01s']= "2001-Softies";
      $charts['00s']= "2000-Softies";
      $charts['98']= "1998";
      $charts['rs']= "Remember-Slow";
      error_reporting(E_ALL); // alle Fehler anzeigen
      function inhaltsverzeichnis($aktSite, $inhalte, $farbe_aktiv, $farbe_bg, $erste=true) {
      if($erste) {
      echo("&lt; table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" width=\"100%\" bgcolor=\"$farbe_bg\">\n");
      }
      foreach($inhalte as $key => $akt) {
      $keyPhp=$key.".php";
      if ($keyPhp==$aktSite) {
      echo("$inhalte ");
      echo("$key ");
      echo("$$key ");
      if (isset($$key)) {
      inhaltsverzeichnis($aktSite, $$key, $farbe_aktiv, $farbe_bg, false);
      }
      else {echo("&lt;tr>&lt; td bgcolor=\"$farbe_aktiv\">&lt; a href=\"index.php?site=$keyPhp\">".$akt."&lt;/a>&lt;/td>&lt;/tr>\n");
      }
      }
      else {
      echo("&lt;tr>&lt;td bgcolor=\"$farbe_bg\">&lt;a href=\"index.php?site=$keyPhp\">".$akt."&lt;/a>&lt;/td>&lt;/tr>\n");
      }
      }
      if($erste) {
      echo("&lt;/table>");
      }
      }
      ?>
      </pre>

      Aufgerufen wird das ganze damit:

      inhaltsverzeichnis($site, $inhalt, $farbe_aktiv, $farbe_bg);

      Dadurch, das ich den letzten Parameter ($erste) nicht mitübergebe, weiss die funktion, das dies die oberste ebene ist, und erstellt die Tabelle.

      $charts[] kommt beim rekursiven aufruf in die Funktion. Meine Überlegung ist, das der Key des übergeordneten Arrays der Name des Untergeordneten ist:

      $inhalt['charts']="bla1";
      $charts['irgendwas']="bla2";

      Mittels $key aus der foreach-schlaufe komme ich nun auf das bla2:
      echo("$$key");

      Dadurch kann ich in jedes Feld einen String schreiben wie ich es möchte, muss also nicht auf Sonderzeichen achten. Dies ist gedacht für die Anzeige. Das brauche ich, da ich ja im obersten Array ($inhalte[]) auch für jede Unterkategorie einen Namen brauche. Ein Array dieser Art ist ja nicht möglich, oder?:

      $inhalte['vinyl']='blabla';
      $inhalte['vinyl']['ah']='Aktuelle Hardies'; $inhalte['vinyl']['02h']='2002-Hardies';

      So, ich hoffe ich konnte da ein bisschen Licht in mein Problem bringen

      Comment

      Working...
      X