Gesagt:
Einen Parameter oder eine Methode zum Sortieren hab ich nicht gefunden, die müsste geschrieben werden
Getan:
// Verzeichnisinhalt einsammeln
$fileInfos = [];
$rd = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator( $dirName )
);
$i=0; $dtos=[];
foreach ( $rd as $fileInfo ) {
$fileInfos[$fileInfo ->getPathname()] = $fileInfo;
$dtos[] = $fileInfo ->getPathname();
}
asort( $dtos );
$dtos = array_reverse( $dtos );
print_r( $dtos ); exit;
Das liefert dann endlich brauchbares:
Fund # Aktion
######################################
[0] => /tmp/a/c/.. # Ignorieren
[1] => /tmp/a/c/. # rmdir /tmp/a/c
[2] => /tmp/a/b/c # Löschen
[3] => /tmp/a/b/b # Löschen
[4] => /tmp/a/b/a # Löschen
[5] => /tmp/a/b/.. # Ignorieren
[6] => /tmp/a/b/. # rmdir /tmp/a/b
[7] => /tmp/a/a/a a # Löschen
[8] => /tmp/a/a/a # Löschen
[9] => /tmp/a/a/.a # Löschen
[10] => /tmp/a/a/.. # Ignorieren
[11] => /tmp/a/a/. # rmdir /tmp/a/a/
[12] => /tmp/a/.. # Ignorieren
[13] => /tmp/a/. # rmdir /tmp/a
Jetzt könnte ich über die sortierten $dtos
das richtige Objekt aus $fileInfos rausziehen, ::getFilename() untersuchen, (wenn '..') das Item ignorieren oder (wenn '.') das leere Verzeichnis darunter löschen oder die Datei löschen.
Nur habe ich da ja schon den Dateiname.
Fazit: Der Schatz [RecursiveDirectoryIterator](https://www.php.net/manual/de/class.recursivedirectoryiterator.php)
ist einer. Aber halt dann, wenn ich mehr und andere Informationen verarbeiten will - zum Löschen ist dessen Nutzung zu viel Aufwand: Quasi der Versuch, mit einem 1000PS-Traktor und einer riesigen Maschine Nadeln aus einem Heuhaufen zu ziehen, sie dabei zu vermessen und deren Hersteller, Farbe, Material, Härtegrad zu bestimmen - wobei aber doch eigentlich der Heuhaufen nur von Nadeln befreit werden soll... was ein billiger Magnet ratzfatz erledigt.