【发布时间】:2012-05-15 22:39:18
【问题描述】:
我正在努力解决如何使用 SPL 迭代器删除 PHP 中的空目录树。考虑以下所有目录为空的目录结构:
/topdir
level1 level2
我尝试了以下方法:
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(
'/topdir', RecursiveIteratorIterator::CHILD_FIRST
));
foreach ($it as $file) {
if ($file->isDir()) {
rmdir((string)$file);
}
}
但是RecursiveIteratorIterator::CHILD_FIRST 阻止底层文件成为循环的一部分,我得到标准的Directory not empty E_WARNING,因为 level1 不是空的。
如何使用 SPL 迭代器递归删除空目录树?注意:我知道如何使用glob、scandir 等来执行此操作。请不要提供这些/类似功能作为解决方案。
我觉得我必须在这里遗漏一些非常基本的东西......
【问题讨论】:
-
您确定所有这些目录都只包含目录吗?
-
好的是的,他们可能是,我能够用空目录重现这个错误。 :)
-
是的。我已经创建了目录结构作为专门针对这个问题的健全性检查。