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