SPLイテレータを使用してPHPで空のディレクトリのツリーを削除する方法に苦労しています。私は次のことを試してみたPHP SPLイテレータで空のディレクトリを再帰的に削除
/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
は、下のレベルのファイルを防ぐすべてのディレクトリが空である、次のディレクトリ構造を考えてみましょうループの一部ではなく、level1が空ではないため、標準Directory not empty
E_WARNINGを取得します。
SPLイテレータを使用して空のディレクトリのツリーを再帰的に削除するにはどうすればよいですか?注:私はglob
、scandir
などでこれを行う方法を知っています。これらの/同様の機能をソリューションとして提供しないでください。私はここに非常に基本的な何かが欠けする必要がありますように私は感じ
は...
に
::SKIP_DOTS
フラグを追加しないようにするにはディレクトリ以外は何もありませんか? –OKはい、私は空のディレクトリでこのエラーを再現できました。 :) –
はい。私はディレクトリ構造をこの問題のためのサニティチェックとして作成しました。 – rdlowrey