mehrdimensionales Array auslesen
Andreas Vogt
- php
0 Joe_A0 Andreas Vogt0 ChrisB
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
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
Hallo,
danke für den Tip.
Aber wie kann ich das Array dann wieder in einer Foreach Schleife auslesen?
Andreas
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
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
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