Dateien werden falsch gezählt

L

Lukasz

Hallo,

Ich habe einen script geschrieben, indem die Anzahl der dateien in einem Ordner ausgegeben wird.

PHP:
<?php
$dir=opendir("downloads/rollmaterial/Loks/elektro/zips");
while ($file = readdir($dir))
{
$a = count("$file");
echo ("$a");
}
closedir($dir);

?>

Das Problem ist, das in dem Ordner 1 Datei ist. und Ausgegeben bekomme ich:
"111"
Was mach ich falsch?
 
count() wird verwendet um die Elemente in einem Array zu zählen. readdir() gibt jedoch kein Array zurück. Somit ist die Funktion count() hier schlicht und ergreifend fehl am Platze.

Löse das ganze besser über eine Zählervariable, die du vor der while-Schleife auf 0 setzt und innerhalb bei jedem durchlauf um 1 erhöhst.

Dann bekommst du die 1 dreimal ausgegeben, weil die Elemente "." (momentanes Verzeichnis) und ".." (nächst höheres Verzeichnis) mitgezählt werden.
 
Verständlich ist es zumindest.

Ich habe nicht ganz nachvollziehen können, wie du das meinst mit dem ständigem durchlaufen und eins erhöhen. Soll ich in dem Ordner eine function mit opendir eröffnen oder meinst du eher eine IF Funktion?

Ich bin noch nicht sehr weit in php, lerne aber immer wieder eine Kleinigkeit dazu.:-) Ich habe es irgend wie so verstanden. :-( *schäm*

PHP:
<?php
$dir=opendir("downloads/rollmaterial/Loks/elektro/zips");
$zähler = ("0");
while ($file = readdir($dir))
{
$a = $zähler + $file;
echo ("$a");
}
closedir($dir);

Oder ich peil nicht wie man das macht.
 
Erstmal: Da wo du deine Klammern hinsetzt, ist es zwar nicht falsch, aber ziemlich schlechter Stil.

Z.B. sollte man die Echo-Anweisung und nicht die Funktion benutzen, was du aber mit echo (...[color="#FF00000"])[/color] bereits machst.

Lern dringend die Basics!
Sachen wie $zähler = ("0"); sind schlecht:
o Umlaute in Variablen hab ich zwar noch nie ausprobiert, kann mir aber gut Vorstellen, dass das schnell zu Problemen führt!
o Hier braucht man keine Klammern, das Gleichheitszeichen hat eh eine sehr niedrige Priorität.
o "0" ist insofern schlecht, da du ja einen Integer willst, ihn mit den Quotes aber zu einem String machst!

Ein Beispiel wäre z.B.:
PHP:
$iFileCount  = 0;
$iDirHandler = opendir("./downloads/rollmaterial/Loks/elektro/zips/";

while ($sFileName = readdir($iDirHandler)) {
    if ( ($sFileName != ".") && ($sFileName != "..") ) {
        $iFileCount++;
    }
}

closedir($iDriHandler);

?>Anzahl der Dateien: <?php
echo $iFileCount;
 
Zurück