Moin,
Gesagt:
Einen Parameter oder eine Methode zum Sortieren hab ich nicht gefunden, die müsste geschrieben werden
Getan: […]
das geht auch einfacher: RecursiveIteratorIterator und RecursiveDirectoryIterator kennen ganz nützliche Flags als zweiten Parameter im Konstruktor. Wenn man über dein mit exec angelegtes Testverzeichnis den Code:
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
'/tmp/a',
FilesystemIterator::SKIP_DOTS
),
RecursiveIteratorIterator::CHILD_FIRST
);
laufen lässt, bekommt man als Ausgabe von getPathname() diese Liste der Verzeichnisse und Dateien:
0: /tmp/a/b/b
1: /tmp/a/b/c
2: /tmp/a/b/a
3: /tmp/a/b
4: /tmp/a/c
5: /tmp/a/a/a a
6: /tmp/a/a/.a
7: /tmp/a/a/a
8: /tmp/a/a
Die Einträge sind dann gleich so sortiert dass man jeden Eintrag einfach löschen kann, wenn man zum Elternverzeichnis kommt, ist dieses bereits leer – nur /tmp/a selbst bleibt dann noch übrig.
Gruß
Tobias