Ich arbeite an einem etwas neuen Projekt. Ich wollte wissen, wie viele Dateien sich in einem bestimmten Verzeichnis befinden.
<div id="header">
<?php
$dir = opendir('uploads/'); # This is the directory it will count from
$i = 0; # Integer starts at 0 before counting
# While false is not equal to the filedirectory
while (false !== ($file = readdir($dir))) {
if (!in_array($file, array('.', '..') and !is_dir($file)) $i++;
}
echo "There were $i files"; # Prints out how many were in the directory
?>
</div>
Das habe ich bisher (von der Suche). Es erscheint jedoch nicht richtig? Ich habe ein paar Notizen hinzugefügt, also zögern Sie nicht, sie zu entfernen. Sie dienen nur dazu, sie so gut wie möglich zu verstehen.
Wenn Sie weitere Informationen benötigen oder das Gefühl haben, dass ich dies nicht genug beschrieben habe, können Sie dies gerne angeben.
count(scandir("uploads/")) - 2
diese Schleife zu verwenden.Antworten:
Sie können einfach Folgendes tun:
quelle
FilesystemIterator::SKIP_DOTS
da dies ohnehin Standard ist.Sie können die Anzahl der Dateien wie folgt abrufen:
Wo das
"*"
ist, können Sie das in einen bestimmten Dateityp ändern, wenn Sie möchten,"*.jpg"
oder Sie können mehrere Dateitypen wie diesen ausführen:Das
GLOB_BRACE
Flag erweitert {a, b, c} um 'a', 'b' oder 'c'.quelle
__DIR__ .
vor"/path/to/dir/"
(__DIR__ . "/path/to/dir/"
)/path/to/dir
fehlschlagen, weil zuerst/
bedeutetstarting from root dir
. Wennpath/to/dir
ja, dann__DIR__ . '/path/to/dir'
würde ja helfen (in diesem Fall müssen Sie/
nach__DIR__
Versuche dies.
Ohne das '.' und '..'.
quelle
$num_files = count($files) - 2;
? Wegen.
sowie..
.
und dies zu..
versuchen: $ files =array_diff( scandir("/dir"), array(".", "..") );
array_slice(scandir($directory),2)
Du solltest haben :
quelle
Die beste Antwort meiner Meinung nach:
quelle
Da ich das auch brauchte, war ich gespannt, welche Alternative die schnellste war.
Ich fand heraus, dass Babas Lösung viel schneller ist als die anderen , wenn Sie nur eine Anzahl von Dateien wünschen . Ich war ziemlich überrascht.
Probieren Sie es aus:
Testlauf: (zählt offensichtlich
glob()
keine Punktdateien)quelle
Arbeitsdemo
quelle
Ich benutze das:
quelle
array_slice
funktioniert ähnlich wie einesubstr
Funktion, nur funktioniert es mit Arrays.Dies würde beispielsweise die ersten beiden Array-Schlüssel aus dem Array herausschneiden:
Und wenn Sie den ersten Parameter wie im ersten Beispiel weglassen, enthält das Array nicht die ersten beiden Schlüssel / Wert-Paare * ('.' Und '..').
quelle
Vielleicht nützlich für jemanden. Auf einem Windows-System können Sie Windows die Aufgabe ausführen lassen, indem Sie den Befehl dir aufrufen. Ich benutze einen absoluten Pfad, wie
E:/mydir/mysubdir
.quelle
Dies sollte funktionieren. Geben Sie das Verzeichnis in dirname ein. und lass die Magie geschehen.
quelle
quelle
Basierend auf der akzeptierten Antwort können Sie alle Dateien in einem Verzeichnis RECURSIVELY zählen:
quelle
Hier ist eine PHP-Linux-Funktion, die sehr schnell ist. Ein bisschen dreckig, aber es erledigt den Job!
$ dir - Pfad zum Verzeichnis
$ type - f, d oder false (standardmäßig)
f - gibt nur die Anzahl der Dateien zurück
d - gibt nur die Anzahl der Ordner zurück
false - Gibt die Gesamtzahl der Dateien und Ordner zurück
Sie können an Ihre Bedürfnisse anpassen.
Bitte beachten Sie, dass dies unter Windows nicht funktioniert.
quelle
Einfach hinzufügen ist fertig ....
quelle