php递归删除非空文件夹

1. 第一种方法在php manual评论中的第一个就有。

public static function delTree($dir) {
       if(!is_dir($dir))
          return;
$files = array_diff(scandir($dir), array('.','..')); foreach ($files as $file) { (is_dir("$dir/$file")) ? self::delTree("$dir/$file") : unlink("$dir/$file"); } return rmdir($dir); }

(1)scandir以数组形式返回当前目录下的内容。

(2)原来字符串可以这样写"$dir/$file"。

 

2.使用RecursiveDirectoryIterator。

public static function delTree($dir) {
        if(!is_dir($dir))
            return;
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir),RecursiveIteratorIterator::CHILD_FIRST);
        foreach ($files as $file) {
            (is_dir($file)) ? self::delTree($file) : unlink($file);
        }
        return rmdir($dir);
    }

 

3.使用glob。

public static function delTree($dir) {
        if(!is_dir($dir))
            return;
        $files = glob("$dir/*");
        foreach ($files as $file) {
            (is_dir($file)) ? self::delTree($file) : unlink($file);
        }
        return rmdir($dir);
    }

 

 

posted @ 2013-02-21 16:10  emmac  阅读(266)  评论(0编辑  收藏  举报