PHP多目录删除

PHP多目录删除,php,rmdir,Php,Rmdir,因此,我正在创建一个图像上传网站,我需要同时删除多个目录和文件。我已经成功地创建了完成这项工作的代码,但是我不确定这是否是“好代码”,因为我在重复我自己 有没有更好的方法写下面的内容 $dirname = 'uploads/'.$album_id; $dirnamethumb = 'uploads/thumbs/'.$album_id; if (is_dir($dirname)) $dir_handle = opendir($dirname); if (!$dir_handle)

因此,我正在创建一个图像上传网站,我需要同时删除多个目录和文件。我已经成功地创建了完成这项工作的代码,但是我不确定这是否是“好代码”,因为我在重复我自己

有没有更好的方法写下面的内容

$dirname = 'uploads/'.$album_id;
$dirnamethumb = 'uploads/thumbs/'.$album_id;

if (is_dir($dirname))
    $dir_handle = opendir($dirname);
if (!$dir_handle)
    return false;
while($file = readdir($dir_handle)) {
    if ($file != "." && $file != "..") {
        if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
        else
            delete_directory($dirname.'/'.$file);
    }
}

if (is_dir($dirnamethumb))
    $dir_handle = opendir($dirnamethumb);
if (!$dir_handle)
    return false;
while($file = readdir($dir_handle)) {
    if ($file != "." && $file != "..") {
        if (!is_dir($dirnamethumb."/".$file))
            unlink($dirnamethumb."/".$file);
        else
            delete_directory($dirnamethumb.'/'.$file);
    }
}
closedir($dir_handle);
rmdir($dirname);
rmdir($dirnamethumb);
return true;
提前感谢您的帮助

试试这个,
$dir = '/path/to/some/dir/'; // notice: trailing slash!
if ($handle = opendir($dir)) {
    while (false !== ($entry = readdir($handle))) {
        if (is_dir($dir . $entry) ) {
            rmdir($dir . $entry);
        }
    }
    closedir($handle);
}
?>

为什么不试试这个递归函数呢


这不是只删除一个目录吗?我期待着删除多个目录在同一时间。因此,我重复了代码对不起,我认为我没有很好地解释我自己。请允许我重新表述一下:我希望删除父目录中的某些目录。用户可以选择删除相册,相册将保存在“上载/相册名称”下,相同图片的缩略图将保存在“上载/缩略图/相册名称”下。因此,我只希望删除指定的目录只。在我上面的代码中,我循环并删除一个目录中的所有文件,然后使用不同的文件路径重复完全相同的代码。当看到重复时,使用数据进行循环:
$dirs=array('uploads/'。$album_id,'uploads/thumbs/'。$album_id)
,然后循环使用
$dirs
来完成您的工作。。。之后,我不知道删除文件夹的“好方法”。。。有很多功能。。。你的看起来很干净,太棒了!现在只有一半的尺寸了,非常感谢!!!您可能需要检查
$file
是否不是
,否则您将有一个无限递归循环。。。
function rrmdir($dir) { 
  foreach(glob($dir . '/*') as $file) { 
    if(is_dir($file)) 
      rrmdir($file); 
    else 
      unlink($file); 
  } rmdir($dir); 
}