首页 > php 递归删除函数

php 递归删除函数

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行。

   我们来看一个经典的递归删除函数

   函数的作用:删除目录下面的所有文件,并删除目录

   函数代码:

 

 function deldir($dirname){    

     if(file_exists($dirname)){//首先判断目录是否有效    

         $dir = opendir($dirname);//用opendir打开目录    

         while($filename = readdir($dir)){//使用readdir循环读取目录里的内容    

          if($filename != "." && $filename != ".."){//排除"."和".."这两个特殊的目录    

             $file = $dirname."/".$filename;    

             if(is_dir($file)){//判断是否是目录,如果是则调用自身    

                 deldir($file); //使用递归删除子目录      

             }else{    

               unlink($file);//删除文件    

             }    

           }    

         }    

             closedir($dir);//关闭文件操作句柄    

             rmdir($dirname);//删除目录    

     }    

 }    

 ?> 

   使用实例:Public是一个文件夹,里面有许多文件夹和文件,调用deldir($dirname)把它删除

 $dir='Public';//传入一个文件夹路径    

 deldir($dir);//调用函数    

 ?> 

   说明:首先判断Public是否存在,如果在则打开Public,然后使用readdir循环读取Public目录里的内容,如果存在"."和".."这两个特殊目录则排除掉。如果遇到文件夹则调用自身处理,直到条件不满足。遇到文件则直接删除掉。最后层层跳出删除Public。



转载于:https://my.oschina.net/guomingliang/blog/209573

更多相关:

  • 草色新雨中, 松声晚窗里。之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作。虽然 PowerQuery 已经将大部分常用功能内置成到功能区。基本能完成我们大部分的报表自动化功能。但是总有些复杂的或者个性化的问题是开发团队没有预先想到的,这时我们就需要学习 M 语言。一、M 语言在哪里?M语言的函数公式有三个地...

  • 前言从2020年3月份开始,计划写一系列文档--《小白从零开始学编程》,记录自己从0开始学习的一些东西。第一个系列:python,计划从安装、环境搭建、基本语法、到利用Django和Flask两个当前最热的web框架完成一个小的项目第二个系列:可能会选择Go语言,也可能会选择Vue.js。具体情况待定,拭目以待吧。。。基本概念表达式表...

  • 1.1函数1.1.1什么是函数函数就是程序实现模块化的基本单元,一般实现某一功能的集合。函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态。1.1.2函数的作用函数是组织好的,可重复使用的,用来...

  • 原标题:基于Python建立深度神经网络!你学会了嘛?图1 神经网络构造的例子(符号说明:上标[l]表示与第l层;上标(i)表示第i个例子;下标i表示矢量第i项)单层神经网络图2 单层神经网络示例神经元模型是先计算一个线性函数(z=Wx+b),接着再计算一个激活函数。一般来说,神经元模型的输出值是a=g(Wx+b),其中g是激活函数(...

  • 在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重。小编刚开始学习的时候也会有这个感觉。不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个。今天小编就把常用的函数汇总一下,为大家能够能好的学习MySQL中的函数。MySQL常使用的函数大概有四类。时间函数、数学函数、字符函数、控制函数。让我...

  • 这里用散装版本的AutoScssStruct4Vue为例 先去https://github.com/accforgit/AutoScssStruct4Vue下载 然后把解压后的包放入C:UsersAdministrator.vscodeextensions(地址根据你自己的安装目录而定)    点开目录在资源管理器...

  • 网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include #include #include #include

  • 文章目录git 最小配置作用域git 创建本地仓库git log 查看版本演进.git 目录refs目录objectsgit 三种对象类型详解 (commit ,tree,blob)...

  • 一 . 进入目录权限 如果我在普通用户下创建了一个目录f1,然后使用chomd u-rwx,g-rwx,o-rwx之后,我在普通用户下想进入f1目录,权限不允许。 然后我切换到超级用户下,再次尝试进入到f1目录,这个时候允许进入。 然后回到普通用户下,只给f1的所有者读的权限,然后在普通用户下尝试进入,此时权限还是...

  • windows下rpc框架thrift的环境配置 引用链接: https://www.cnblogs.com/49er/p/7193829.html 最近在弄windows下 的Facebook的rpc 框架 thrift , 网上东西看了很多, 但是大都不能一篇到位, 这里总结了一下, 也记一下自己遇到的问题和解决的方法 这里...

  • initializeGL函数由于是初始化,所以只调用一次 而resizeGL和paintGL会多次调用 resizeGL在正常的情况下,触发的条件是,窗口大小发生变化时,resizeGL被调用,之后会触发paint事件,从而调用paintGL()事件处理器。 paintGL在正常的情况下,只要你移动窗口的位置,就会马上触发pain...

  • 思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include   using namespace std;    class A{  public:  A(){  cout<<"A()"<

  • (1)如果用定时器的话,初始的时候注册一个定时器的回调函数,原型是 glutTimerFunc(unsigned int millis, void (*func)(int value), int value);         参数对应关系为:glutTimerFunc(毫秒数, 回调函数指针, 区别值); (2)写自己的回调函数 v...

  • 0x00 前置信息 VLC是一个非常庞大的工程,我从它的架构及流程入手进行分析,涉及到一些很细的概念先搁置一边,日后详细分析。 0x01 源码结构(Android Java相关的暂未分析) # build-android-arm-linux-androideabi/:第三方库。 # modules/:模块代码。 # modules/...