Einfache Frage für einen Newb und mein Google-Fu versagt mich. Wie können Sie mit PHP die Anzahl der Dateien in einem bestimmten Verzeichnis zählen, einschließlich aller Unterverzeichnisse (und eventuell vorhandener Unterverzeichnisse usw.)? z.B. Wenn die Verzeichnisstruktur so aussieht:
%Vor%Das Skript sollte mit "5" für "./Dir_A" zurückkehren.
Ich habe folgendes zusammengeschustert, aber es liefert nicht die richtige Antwort, und ich bin mir nicht sicher warum:
%Vor%Ich würde jede Hilfe sehr schätzen.
Verwenden Sie die SPL, dann sehen Sie, ob Sie immer noch einen Fehler erhalten.
Anwendungsbeispiel:
%Vor%Dies druckt eine Liste aller Dateien und Verzeichnisse unter $ path (einschließlich $ path ifself). Wenn Sie Verzeichnisse auslassen möchten, entfernen Sie den RecursiveIteratorIterator :: SELF_FIRST-Teil.
Dann benutze einfach isDir ()
Warum übermittelst du $ filecount? Der [pass-in] Wert wird nicht verwendet; Die einzige Verwendung ist bei "$ total + = $ filecount" und Sie überschreiben $ filecount kurz davor.
Sie verpassen den Fall, wenn die Funktion auf eine normale (nicht dir) Datei trifft.
Edit: Ich habe gerade den Aufruf von glob () bemerkt. Es ist nicht nötig. Ihre Funktion berührt rekursiv jede Datei in der gesamten Verzeichnisstruktur. Siehe @Paolo Bergantinos Antwort.
Paolo Bergantino war fast mit seinem Code, aber die Funktion wird immer noch .DS_Store Dateien zählen, da er sie falsch geschrieben hat. Korrigieren Sie den Code unter
%Vor% Überprüfen Sie das PHP-Handbuch zu glob()
function: Ссылка
Es gibt Beispiele in Kommentaren, wie man es rekursiv machen kann.