php递归删除目录需要注意的是原本就自动带有的“.”和“..”,还有就是如果目录中有文件,就不能直接删除
明白这点,我们就开始删吧:(删前确保./a目录存在哈)
/**
递归删除目录
**/
function deldir($path) {
// 不是目录,直接返回
if(!is_dir($path)) {
return NULL;
}
// 走到这步说明是目录
$dh = opendir($path);
while(($row = readdir($dh)) !== false) {
//过滤.和..
if($row == '.' || $row == '..') {
continue;
}
// 判断是否是普通文件
if(!is_dir($path . '/' . $row)) {
unlink($path . '/' . $row);
} else {
deldir($path . '/' . $row); //递归把子目录/子文件删了
}
}
closedir($dh);
rmdir($path);
echo '删了',$path,'<br />';
return true;
}
echo deldir('./a')?'ok':'false';