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

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

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

函数代码:

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。

php递归删除,php 递归删除函数相关推荐

  1. 二叉排序树的定义及基本操作(构造、查找、插入、删除)递归及非递归算法

    文章目录 二叉排序树的定义 二叉排序树的查找 二叉排序树的插入 二叉排序树的构造 二叉排序树的删除 完整代码及实例 二叉排序树的查找效率 二叉排序树的定义 二叉排序树(Binary Sort Tree ...

  2. 【Linux 内核 内存管理】RCU 机制 ③ ( RCU 模式下添加链表项 list_add_rcu 函数 | RCU 模式下删除链表项 list_del_rcu 函数 )

    文章目录 一.RCU 模式下添加链表项 list_add_rcu 函数 二.RCU 模式下删除链表项 list_del_rcu 函数 一.RCU 模式下添加链表项 list_add_rcu 函数 在 ...

  3. php中删除数组元素的函数,php删除数组中的元素函数用法汇总

    php中删除数组元素是非常的简单的,主要是unset,array_splice,但是关于两者有,长时间混用,有的时候竟然分不出区别. 很多地方都这样区别unset,array_splice array ...

  4. Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录...

    上节课复习: 1.函数的对象     函数可以被当作数据取处理 2.函数嵌套     嵌套调用:在调用一个函数时,函数体代码又调用了其他函数     嵌套定义:在一个函数内部又定义了另一个函数 1 d ...

  5. VB 源码 删除重复行程序 函数

    代码如下: '通过VB脚本改写而成,可以直接使用  放入程序中可以直接使用 '删除重复行程序 ' 'foutPathName  为待删除的文本文件.注:输入文件不能有空行,别外扩展名必需为.TXT ' ...

  6. 87.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。

    87.假定输入的字符串中只包含字母和号.请编写函数fun,它的功能是:除了字符串前导的号之外,将串中其他*号全部删除.在编写函数时,不得使用C语言提供的字符串函数. 例如,若字符串中的内容为****A ...

  7. linux c 删除文件,linux c remove 删除文件或目录函数

    linux c remove 删除文件或目录函数 头文件:#include remove()函数用于删除指定的文件,其原型如下: int remove(char * filename); [参数]fi ...

  8. 编写函数 int fac(int x)计算 x!的值。在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac)

    编写函数 int fac(int x)计算 x!的值.在主函数中输入 n 和 m 的值,通过调用函数 fac 计算m Cn 的值(要求分别用递归和非递归的方法编写函数 fac) 递归: #includ ...

  9. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...

    点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...

  10. C++第七次作业(函数_递归与非递归_多文件)

    文章目录: 一:C++递归与非递归实现整数的阶乘 代码实现 运行结果 二:C++递归与非递归实现Fibonacci数列的计算:a0=1; a1=1; a2=a0+a1; a3=a1+a2; ..... ...

最新文章

  1. ormlite android studio,OrmLite-android入门体验
  2. 图数据库应用:金融反欺诈实践
  3. Android adb无线调试脚本
  4. activity7 拖不动_Activiti7相关问题汇总
  5. OC之OBJC2_UNAVAILABLE
  6. 基于PCA和SVM的人脸识别
  7. 2018-2019-2 20165234 《网络对抗技术》 Exp5 MSF基础应用
  8. Dubbo关于timeout等相关配置的优先级
  9. Work Queues(点对多)
  10. 1.6QQ拼音输入的亮点——相框
  11. 初中计算机考试素材,初中信息技术素材.ppt
  12. 博图注册表删除方法_arcgis 10.2安装时error1606以及error2753解决方法记录
  13. Unity3d 周分享(8期 2018.12.16)
  14. php后台您没有权限访问该页面,登陆微信公共平台提示没有权限访问该页面请点击返回首页现象的解决办法...
  15. Fantom (FTM) 价格将在未来几天飙升 20%
  16. Android 在导航栏上添加一个截屏按键,点击进行截屏
  17. 记录一次浏览器HTTPS“你的连接不是私密连接”错误NET::ERR_CERT_REVOKED
  18. FFmpeg之FLV Muxing Demuxing
  19. CentOS 7账号密码忘了怎么办?
  20. [Java8新特性]Collectors源码阅读-1 toCollections和joining等

热门文章

  1. 【1109. 航班预订统计】
  2. Aplayer音乐播放插件
  3. 如何选择免费CRM软件?有什么功能?
  4. java命令行运行 classnotfound_Kotlin测试从ClassNotFoundException的命令行失败,但是从IntelliJ开始工作...
  5. windows绑定hosts
  6. 戴尔服务器怎么安装win7系统,展示戴尔电脑如何重装win7
  7. js 直接打开选择文件窗口_基于HTML5 构建的 Web端现代化PDF在线预览插件——PDF.js...
  8. 基于Python二手交易系统设计与实现 开题报告
  9. 利用qt实现解压缩zip文件
  10. AWS云平台的服务概览