phpbar.de logo

Mailinglisten-Archive

[php] Directory lesen mittels Rekursion

[php] Directory lesen mittels Rekursion

Hartmut Holzgraefe (_(at)_home) hartmut_(at)_six.de
Mon, 31 Jul 2000 08:38:24 +0200


eschmid+sic_(at)_s.netic.de wrote:
> 
> On Mon, Jul 31, 2000 at 12:46:19AM +0200, Erich Hohermuth wrote:
> 
> > Ich möchte eine Directory-Struktur auslesen und dabei die
> > VerzeichnissNamen ausgeben.
> > Folgender Code geht soweit rekursiv in die Tiefe, jedoch beim Aufsteigen
> > erkennt der "is_dir"-Befehl das File nicht mehr als Directory. Die while
> > Schleife wird jedoch sauber beendet. Hat mir da jemand einen Tipp. Laut
> > PHP-Manual sollte der Variablen-Scope stimmen.
> >
> > <?php
> >
> > function readreq($path) {
> >     $error = chdir($path);
> >     $fd= opendir($path);
> >     while ($file = readdir($fd)) {
> 
> Hier duerfte der Hund begraben sein. Schreib mal statt "=", "==". Die
> while-Schleife braucht eine "expression" und keine normale Zuweisung. Je
> nachdem while TRUE oder FALSE ergibt, wird dann die Schleife abgebrochen.

das ist in Ordnung, die Schleife läuft, solange readdir() weitere
Einträge
liefert und bricht dann ab

> 
> >         if(is_dir($file) && !($file=="." || $file==".."))
> >
> >                 echo "<b>$file</b><br>\n"; // Debug Ausgabe
> >                 readreq($path . $file ."/"); // Wir rufen uns selber auf
> > !

hier liegt das eigentliche Problem:
jeder Aufruf beginnt mit chdir($path), 
diese Änderung des aktuellen Verzeichnisses wird 
aber auf dem Rückweg nicht wieder Rückgängig gemacht

> >         }
> >     }
> >     closedir($fd);
> > }
> >
> >
> > echo "Der Directory Test<br>";
> > readreq("/usr/home/www/");
> >
> > ?>
> 
> -Egon
> 
> --
> http://www.linuxtag.de/
> http://php.net/books.php
> http://www.concert-band.de/
> 
> --
> ** Durchgehend geöffnet: http://www.php-center.de **
> Die PHP-Liste: mailto:php_(at)_php-center.de
> http://infosoc.uni-koeln.de/mailman/listinfo/php

--
Harmut Holzgraefe        hholzgra_(at)_media-engineering.de


php::bar PHP Wiki   -   Listenarchive