SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.12.2003, 13:38:50
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Frage zu readdir

Ich habe mal eine Frage zu readdir:

Warum funktioniert das Auslesen eines Ordners so:

PHP-Code:
$verz=opendir ('.');

while (
$file readdir ($verz)){
    echo 
"$file <br>";
    }

closedir($verz); 
aber so nicht:

PHP-Code:
$verz=opendir ('.');

$file readdir ($verz);

while (
$file){
    echo 
"$file <br>";
    }

closedir($verz); 
Ich tippe mal, dass die Lösung ziemlich einfach ist, aber ich komme einfach nicht dahinter.
Mit Zitat antworten
  #2  
Alt 20.12.2003, 13:57:06
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Ich versuche es mal mit Kommentaren zu erklären:
PHP-Code:
// Variante 1

// oeffne verzeichnis und nutze $verz als handle/pointer/verweis
$verz=opendir('.');
// lies die erste/naechste datei aus dem verzeichnis aus
// findet readdir(handle) eine naechste datei, dann gibt die wertzuweisung true zurueck,
//  sonst false, sprich die schleife wird abgebrochen
while ($file readdir($verz)) {
    
// ausgelesenen dateinamen auslesen
    
echo "$file <br>";
}
// handle schliessen/beenden
closedir($verz);

// Variante 2

// oeffne verzeichnis und nutze $verz als handle/pointer/verweis
$verz=opendir('.');
// lies die erste/naechste datei aus dem verzeichnis aus
$file readdir($verz);
// durchlaufe schleife, solange $file nicht false zurueckgibt
// ergebnis sollte eine endlosschleife sein
while ($file) {
    
// ausgelesenen dateinamen auslesen
    
echo "$file <br>";
}
// handle schliessen/beenden
closedir($verz); 
Mit Zitat antworten
  #3  
Alt 20.12.2003, 14:32:36
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Danke schön :). Ich glaube, dass hat mir weitergeholfen.

Wenn ich das richtig verstanden habe, gibt $file=readdir($ordner) also keinen array zurück, sondern nur einen Verweis auf die erste/nächste Datei?
Mit Zitat antworten
  #4  
Alt 20.12.2003, 14:36:43
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Nein, nicht ganz.
Code:
Aktion                      Ergebnis
$file=readdir($ordner)      true, wenn eine naechste Datei gefunden wurde
$file=readdir($ordner)      false, wenn keine naechste Datei gefunden wurde
readdir($ordner)            naechster Dateiname
Ein Array gibt Dir keine dieser Funktionen zurück, das musst Du selber erstellen. Das kannst Du einfach mit dieser Schleife bewerkstelligen:
PHP-Code:
while ($file[]=readdir($ordner)) {

Mit Zitat antworten
  #5  
Alt 20.12.2003, 14:54:37
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Meine letzte Frage war ein bisschen missverständlich gestellt:

Ich meinte, ob ich es richtig verstanden habe, dass die Funktion readdir() keinen Array sondern einen Verweis auf die nächste Datei zurückgibt?
Mit Zitat antworten
  #6  
Alt 20.12.2003, 15:03:10
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Ahso. readdir() gibt den Namen der Datei als String zurück.
Mit Zitat antworten
  #7  
Alt 20.12.2003, 17:04:45
Fuchs Fuchs ist offline
Junior Member
 
Registriert seit: Jul 2003
Beiträge: 182
Wobei diese Vorgehensweise, ein Verzeichnis auszulesen im duemmsten Fall schiefgehen _KANN_.

PHP-Code:
print_r(scandir('.'));

$dh opendir('.');
while (
$fname readdir($dh)){
    echo 
$fnameendl;

Meine Ausgabe:
Code:
Array
(
    [0] => .
    [1] => ..
    [2] => .htaccess
    [3] => 0
    [4] => PHPFunctions.xml
    [5] => bench.php
    [6] => bench1.php
    [7] => bench2.php
    [8] => config.ini
    [9] => inclusions
    [10] => misc.php
    [11] => phpinfo.php
    [12] => projects
)
.
..
.htaccess
Was passiert hier?

Nach dem 3. Durchlauf d. Schleife ('.htaccess') kommt eine Datei mit dem Namen '0'. Also ist $fname == '0' und if ('0') {} wird zu false evaluiert. Die Schleife wurde abgebrochen.

Korrekt muesst man auf den Bool'schen Wert false ueberpruefen.

Sprich:
PHP-Code:
while ($fname readdir($dh) !== false) {}; 
Natuerlich ist das ein Worst-Case, aber es _KANN_ vorkommen und dann sucht man 2 Std. nach dem Problem.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:32:01 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt