迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

在 PHP 中删除目录

作者:迹忆客 最近更新:2023/03/26 浏览次数:

本篇文章将介绍在 PHP 中删除目录的两种方法。 在这里,我们将处理两种情况。

  1. 第一个删除一个空目录
  2. 第二个删除一个非空目录。

使用 rmdir() 函数删除 PHP 中的空目录

我们可以使用 rmdir() 函数来删除 PHP 中的一个空目录。 该函数是一个内置的 PHP 函数。

该函数仅在目录中没有内容时才删除该目录。 我们可以将要删除的目录作为参数提供给 rmdir() 函数。

该函数在成功的情况下返回 true,否则返回 false

该目录应该存在以删除目录。 我们将使用 mkdir() 函数为演示创建一个目录。

该函数将路径名作为参数。

例如,创建一个变量 $path 并存储要创建的目录的路径名。 接下来,使用带有 $path 作为参数的 mkdir() 函数。

示例代码:

$path =$_SERVER['DOCUMENT_ROOT']."/newFolder";
mkdir($path);

上面的代码示例在 PHP 文档根目录中创建了一个目录 newFolder。 当您打印 $path 变量时,输出在 Linux 中看起来像这样。

/var/www/html/newFolder

在 Windows 中,输出有点像这样。

C:\xampp\htdocs\newFolder

由于我们已经创建了一个目录,现在是时候使用 rmdir() 删除它了。

示例代码:

if(is_dir($path)){
 rmdir($path);
 echo "the directory is deleted";
}

输出结果如下:

the directory is deleted

我们使用 is_dir() 函数和 rmdir() 函数检查目录是否存在,以删除文档根目录中的 myFolder 目录。


在 PHP 中使用递归删除非空目录

我们知道 rmdir() 只删除空目录,我们需要使用递归功能和 rmdir() 来删除 PHP 中的非空目录。 在此方法中,我们将使用几个 PHP 函数,如 array_diff()、scandir() 和 unlink()。

array_diff() 函数将多个数组作为参数,并返回一个数组,其中的值仅存在于第一个参数数组中。

scandir() 函数列出指定路径的所有文件和目录。 unlink() 函数删除在其参数中指定的文件。

删除目录背后的概念递归地处理首先找到目录内的所有文件和文件夹。 然后,创建一个循环遍历父目录内的所有内容。

递归操作应用于父目录内的每个文件夹,直到达到深度。 在深度,使用 unlink() 函数删除文件。

该程序递归回到它遍历的路径并删除所有文件。 删除所有文件后,最后删除父目录。

让我们考虑一个目录结构如下所示的场景。

testFolder
├── abc.png
├── abc.text
└── sub
 └── abc.jpeg

下面的代码示例以递归方式删除 testFolder

示例代码:

function deleteDirectory($path){

 $files = array_diff(scandir($path), array('.','..'));
 foreach($files as $file){
 (is_dir("$path/$file")) ? deleteDirectory("$path/$file") : unlink("$path/$file");
 }
 return rmdir($path);
}
$path =$_SERVER['DOCUMENT_ROOT']."/testFolder";
deleteDirectory($path);

在这里,函数 deleteDirectory() 是一个用户定义的函数,它带有一个参数 $path,它是要删除的目录的路径名。 testFolder 是提供的 $path

首先,执行嵌套的 scandir() 函数。 它将 testFolder 目录的所有内容列为一个数组。

Array ( [0] => . [1] => .. [2] => abc.png [3] => abc.text [4] => sub )

接下来,我们使用了 array_diff() 函数来删除来自上面的数组中的 ... 。 单点代表当前目录,双点代表父目录。

结果,**$files** 数组包含 abc.pngabc.textsub。 然后,我们使用 foreach() 循环遍历这些文件和文件夹。

在循环内部,我们检查了可迭代对象是否是一个目录。 但是,前两项不是。

因此,使用 unlink() 函数删除它们。 第三个可迭代子是目录,满足条件。

因此,函数 deleteDirectory() 被递归调用。 这次,目录中只有一个文件。

该文件与其他文件一样被 unlink() 函数删除。 最后,执行退出循环。

接下来,使用 rmdir() 函数删除子目录。 然后递归树向后遍历,删除父目录 testFolder

因此,我们学习了如何使用 PHP 中的各种函数递归删除目录。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便