Andreas Vogt: mehrdimensionales Array auslesen

Hallo,
ich lese per Script ein Verzeichnis aus und speichere Die Datei-Informationen in einem Array:

$this->cache_blocks['filename'] .= $file;
$this->cache_blocks['title'] .= $title;
$this->cache_blocks['content'] .= file_get_contents($blockdir.$file);
$ex = explode("-->", file_get_contents($blockdir.$file));
$this->cache_blocks['direction'] .= substr($ex[0],4);

Jetzt will ich die Arrays auslesen, um die Daten weiterzuverarbeiten.
Wie mach ich das dass ich zu jedem Titel den passenden Content etc. erhalte?
Oder sollte man das Array anderst aufbauen?

Gruß Andreas

  1. Hi.

    Oder sollte man das Array anderst aufbauen?

    Ja solltest du.

    Für jede Datei solltest du einen weiteren Index anlegen.
    Ich würde es z.B. so machen:

      
    $this->cache_blocks=array();  
      
    $this->cache_temp['filename'] .= $file;  
    $this->cache_temp['title'] .= $title;  
    $this->cache_temp['content'] .= file_get_contents($blockdir.$file);  
    $ex = explode("-->", file_get_contents($blockdir.$file));  
    $this->cache_temp['direction'] .= substr($ex[0],4);  
      
    $this->cache_blocks[]=$this->cache_temp;
    

    Das ganze in eine Schleife und fertig.

    Gruß, Joe

    1. Hallo,
      danke für den Tip.
      Aber wie kann ich das Array dann wieder in einer Foreach Schleife auslesen?

      Andreas

      1. Hi,

        Aber wie kann ich das Array dann wieder in einer Foreach Schleife auslesen?

        In dem du es erst mal vernünftig und wirklich mehrdimensional aufbaust.

        $this->cache_blocks['filename'] .= $file;

        Derzeit hängst du ja offenbar nur alle Einzelinhalte in Stringform aneinander (ich nehme an, der Code steht in einer Schleife).
        Dass das eindimensional ist, sollte klar sein.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Hallo,
          ja, ist jetzt klar ;-)

          Jetzt hab ich diese Funktion zum Befüllen:

          function getBlocks(){
          global $nklib;
          if (!$this->cache_blocks) {
          $blockdir = "./blocks/";
          if ($dirhandle = opendir($blockdir)) {
          $i = 0;
          while (false !== ($file = readdir($dirhandle))) {
          $ext = substr(strrchr($file, "."), 1);
          if ($ext == "tpl") {
          $title = str_replace (".tpl", "", $file);
          $this->cache_blocks[$i]['filename'] = $file;
          $this->cache_blocks[$i]['title'] = $title;
          $this->cache_blocks[$i]['content'] = file_get_contents($blockdir.$file);
          $ex = explode("-->", file_get_contents($blockdir.$file));
          $this->cache_blocks[$i]['direction'] = substr($ex[0],4);
          $i++;
          }
          }
          closedir($dirhandle);
              }
          }
          }

          print_r() zeigt jetzt auch dass das Array korrekt angelegt wurde.
          Aber wie lese ich das jetzt wieder aus?

          Gruß Andreas

          1. Habs selbst herausgefunden:
            foreach ($this->cache_blocks as $key => $value) {
            $title  = $value['title'];
                 $filename  = $value['filename'];
                 $direction = $value['direction'];
            $content = $value['content'];
            .....
            }

            Gruß und Danke
            Andreas