从PHP的所有子目录中删除特定的FIle WIth文件名



假设有一个目录,其中有许多子目录。现在,我如何扫描所有子目录,找到一个名为abc.php的文件,并在找到该文件的任何地方删除该文件。

我试着做这样的事情——

$oAllSubDirectories = scandir(getcwd());
foreach ($oAllSubDirectories as $oSubDirectory)
{
  //Delete code here
}

但这段代码不会检查子目录中的目录。知道我该怎么做吗?

通常,您将代码放入函数中并使其递归:当它遇到目录时,它会调用自己来处理其内容。类似这样的东西:

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
        }
    }
}

在这种特殊情况下,您不需要这样做,因为PHP提供了现成的RecursiveDirectoryIterator,它可以自动做到这一点:

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(getcdw()));
while($it->valid()) {
    if ($it->getFilename() == 'abc.php') {
        unlink($it->getPathname());
    }
    $it->next();
}

相关内容

  • 没有找到相关文章

最新更新