一般に、コードを関数内に配置して再帰的にします。ディレクトリに遭遇すると、その内容を処理するために自分自身を呼び出します。このようなもの:
function processDirectoryTree($path) {
foreach (scandir($path) as $file) {
$thisPath = $path.DIRECTORY_SEPARATOR.$file;
if (is_dir($thisPath) && trim($thisPath, '.') !== '') {
// it's a directory, call ourself recursively
processDirectoryTree($thisPath);
}
else {
// it's a file, do whatever you want with it
}
}
}
RecursiveDirectoryIterator
この特定のケースでは、これを行う必要はありません。これは、PHPがこれを自動的に行う既製のものを提供しているためです。
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(getcdw()));
while($it->valid()) {
if ($it->getFilename() == 'abc.php') {
unlink($it->getPathname());
}
$it->next();
}