PHP调用函数本身就是砖块

时间:2013-10-27 12:13:04

标签: php function recursion foreach directory

我在oder中使用PHP以递归方式删除目录。 调用此函数时:

function deleteDir($dirPath) {

        $files = glob($dirPath . '*', GLOB_MARK);
        foreach ($files as $file) {
            if (is_dir($file)) {
                deleteDir($file);
            } else {
                unlink($file);
            }
        }
        rmdir($dirPath);
}

使用此行:

deleteDir("dir_to_be_deleted_recursively/");

这里出错:

deleteDir($file);

(当函数检测到它试图删除的目录中的目录时,它会再次调用该函数,但对于该目录。)

这是我正在测试它的目录:

dir_to_be_deleted_recursively/
   dir1/
      subdir1/
         file1.txt
      subdir2/
         file2.txt
      subdir3/
         file3.txt

注意:我没有收到错误,只是一个空白页。

1 个答案:

答案 0 :(得分:0)

我已经找到了解决方案!

只需使用这段代码即可完美运行:

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) {
    $path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname());
}
rmdir($dirPath);

来源:A recursive remove directory function for PHP?