eddi: Verzeichnis auslesen und in Array schreiben

Beitrag lesen

Hallo,

Für ein Gallerie-Scirpt will ich ein Verzeichnis auslesen und die Bilder in ein Array schreiben. Mit einer Schleife soll dann eine Tabelle erzeugt werden, in der die Bilder ausgegeben werden.

Da bereits liegt ein Denkfehler vor. Du Speicherst Daten in einer while()-Schleife in ein Datenfeld (array), um sie dann in einer weiteren Schleife wieder auszugeben. Das ist doppelte arbeit und der PHP-Prozess braucht dafür unnötig Arbeitsspeicher, denn schon während des Auslesens aus dem Verzeichnis kannst Du den Verzeichnisinhalt vormatiert ausgeben. Ander sieht dies allerdings aus, wenn Du zusätzlich noch eine Sortierung nach Namen der einzelnen Dateien haben möchtest.

Zunächst einmal zwei kleine Scripte, die äquivalent zueinander sind:

// ab Version 5.x von PHP  
$verz='bilder/xyz/';  
$dir1=[link:http://de3.php.net/manual/de/function.scandir.php@title=scandir]($verz);  
  
// Versionen < 5.x  
$dir2=array();  
$d=[link:http://de3.php.net/manual/de/function.opendir.php@title=opendir]($verz);  
while(($bild=[link:http://de3.php.net/manual/de/function.readdir.php@title=readdir]($d))!==false)  
   $dir2[]=$bild;  
[link:http://de3.php.net/manual/de/function.closedir.php@title=closedir]($d);  
[link:http://de3.php.net/manual/de/function.sort.php@title=sort]($dir2);

Nun zu Deinem Script:

echo "<dir>";  
$verz='bilder/xyz/';  
$d=opendir($verz);  
while(($bild=readdir($d))!==false)  
   if(!is_dir($verz.$bild) && $bild!="Thumbs.db")  
      echo '<li>'.$bild.'</li>';  
  
closedir($d);  
echo '</dir>'

Semantisch besser wäre hier die Listung mit <dir> statt einer Tabelle.

Gruß aus Berlin!
eddi