Mam problem z usuwaniem drzewa pustych katalogów w PHP za pomocą iteratorów SPL. Rozważmy następującą strukturę katalogów, w którym wszystkie katalogi są puste:PHP Rekursywnie usuwaj puste katalogi z iteratorami SPL
/topdir
level1 level2
Próbowałem następujące:
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(
'/topdir', RecursiveIteratorIterator::CHILD_FIRST
));
foreach ($it as $file) {
if ($file->isDir()) {
rmdir((string)$file);
}
}
Ale RecursiveIteratorIterator::CHILD_FIRST
zapobiega plik dolny poziom od bycia częścią pętli i otrzymuję standard Directory not empty
E_WARNING, ponieważ level1 nie jest pusty.
Jak mogę rekursywnie usunąć drzewo pustych katalogów za pomocą Iterator SPL? Uwaga: wiem, jak to zrobić z glob
, scandir
itd. Nie oferuj tych/podobnych funkcji jako rozwiązań.
czuję, że musi być brakuje czegoś bardzo elementarną tutaj ...
Czy jesteś pewien, że wszystkie te katalogi zawierają nic więcej poza katalogami? –
OK, tak, prawdopodobnie są w stanie odtworzyć ten błąd pustym katalogiem. :) –
Tak. Stworzyłem strukturę katalogów jako kontrolę poprawności specjalnie dla tego problemu. – rdlowrey