php 递归创建目录、递归删除非空目录、迭代创建目录

递归创建目录

方法一

 1 function mk_dir($path){
 2     if(is_dir($path)){  //参数本身是一个目录
 3         return true;
 4     }
 5 
 6     if(is_dir(dirname($path))){ //参数的父目录是一个目录,则创建目录
 7         return mkdir($path);
 8     }
 9 
10     mk_dir(dirname($path));  
11     return mkdir($path);
12 }
13 
14 $path = './a/b/c/d/e';
15 echo mk_dir($path)?'OK':'Fail';

 

方法二

 1 function mk_dir($path){
 2     if(is_dir($path)){
 3         return true;
 4     }
 5 
 6     return is_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false;
 7 }
 8 
 9 $path = './a/aa';
10 echo mk_dir($path)?'ok':'fail';

 

递归删除非空目录:

 1 function deldir($path){
 2     if(!is_dir($path)){
 3         return '不是目录';
 4     }
 5 
 6     $dh = opendir($path);
 7     while(($res = readdir($dh)) !== false){
 8         //排除 . 和 ..
 9         if($res == '.' || $res == '..'){
10             continue;
11         }
12 
13         if(!is_dir($path.'/'.$res)){    //是文件,直接删除
14             unlink($path.'/'.$res);
15         }else{    //是目录,递归调用
16             deldir($path.'/'.$res);
17         }
18     }
19     closedir($dh);
20     rmdir($path);
21     echo "删除".$path.'<br />';
22     return 'success';
23 }
24 
25 echo deldir('./aa');

 

迭代创建目录

方法一

 1 function mk_dir($path){
 2     $arr = array();
 3     while(!is_dir($path)){
 4         array_unshift($arr, $path); //Array ( [0] => ./a [1] => ./a/b [2] => ./a/b/c [3] => ./a/b/c/d [4] => ./a/b/c/d/e ) 
 5         $path = dirname($path);
 6     }
 7 
 8     //print_r($arr);
 9 
10     if(empty($arr)){
11         return true;
12     }
13 
14     foreach ($arr as $v) {
15         mkdir($v);
16         echo '创建'.$v.'成功<br />';
17     }        
18 }
19 
20 mk_dir('./a/b/c/d/e');

创建./a成功
创建./a/b成功
创建./a/b/c成功
创建./a/b/c/d成功
创建./a/b/c/d/e成功

 

方法二

function mk_dir($path){$arr = array();while(!is_dir($path)){array_push($arr, $path); //Array ( [0] => ./a/b/c/d/e [1] => ./a/b/c/d [2] => ./a/b/c [3] => ./a/b [4] => ./a )$path = dirname($path);}//print_r($arr);if(empty($arr)){return true;}while(count($arr)){$tmp = array_pop($arr);mkdir($tmp);echo $tmp.'创建成功<br />';}        
}mk_dir('./a/b/c/d/e');

./a创建成功
./a/b创建成功
./a/b/c创建成功
./a/b/c/d创建成功
./a/b/c/d/e创建成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基本数据类型——str

一、字符串的创建 test str() / "" test str("licheng") / "licheng" 无参数&#xff0c;创建空字符串一个参数&#xff0c;创建普通字符串两个参数&#xff0c;int&#xff08;字节&#xff0c;编码&#xff09;二、字符串的常用方法 #capita…

MSP430F5529 DriverLib 库函数学习笔记(九)SPI

目录硬知识USCI的同步模式SPI概述SPI特性及结构框图同步操作原理与操作USCI寄存器——SPI模式USCI_x_SPI API &#xff08;机翻&#xff09;处理状态和初始化的函数参数处理数据的函数参数管理中断的函数参数DMA相关参数平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5…

轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

软件工程----9软件实现

软件实现是软件产品由概念到实体的一个关键过程。包括代码设计&#xff0c;设计审查&#xff0c;代码走查&#xff0c;代码编译和单元测试。 1 程序设计语言 应用领域&#xff0c;用户要求&#xff0c;系统兼容&#xff0c;可移植性&#xff0c;开发环境 2 软件编码规范 文件命…

深入理解Threadlocal

SUN公司早在JDK1.2的时候就为我们提供了java.lang.ThreadLocal,低版本的JDK所提供的get()返回的是Object对象&#xff0c;需要强制类型转换&#xff0c;使用起来不方便&#xff0c;而在JDK1.5引入了泛型&#xff0c;在一定程度地简化ThreadLocal的使用。 我们知道在spring容器中…

HDU 2289 几何+圆台

题意;给定一个圆台杯子的R&#xff0c;r&#xff0c;H和里面水的体积V 求h 二分。。。。。。。。。。。。。。。。。 因为解不出来h。。。。。。。。。。。。 View Code 1 /*2 几何3 圆台体积4 V1/3*pi*h*(r1*r1r2*r2r1*r2)5 6 */7 #include<stdio.h>8 #include<stri…

MSP430F5529 DriverLib 库函数学习笔记(十)SPI驱动墨水屏

目录上机实战SPI 驱动 墨水屏墨水屏介绍电子纸的分类电泳型电子纸技术详解原理结构优势与不足实验电路介绍程序分析引脚初始化SPI模块初始化发送和接收全部源代码main.cmain.h墨水屏相关Paper_Display.cPaper_Display.hInclude.h实验结果现象波形对应平台&#xff1a;Code Comp…

Xamarin开发IOS笔记:切换输入法时输入框被遮住

在进行IOS开发的过程中&#xff0c;出现类似微信朋友圈的交互界面&#xff0c;当用户遇到感兴趣的内容可以进行评论。为了方便评论输入&#xff0c;当出现评论输入框的时候自动将评论输入框移动至键盘的上方&#xff0c;这样方便边输入边查看。 当用户隐藏键盘或者切换输入法的…

技术管理进阶——你了解成长的全貌吗?

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

HDU Victor and World (最短路+状态压缩)

题目链接&#xff1a;传送门 题意&#xff1a; n个城市m条路。刚開始在点1&#xff0c;求把每一个城市都遍历一边最后回到1的花费的最小值。 分析&#xff1a; 我们首先须要预处理出随意两个国家之间的最短距离。由于数据范围非常小&#xff0c;所以直接用Floyd即可了。之后&a…

Duplicate standby database from active database

11g Release1 中引入了新的RMAN duplicate命令&#xff0c;即duplicate from active database命令。利用该命令可以更加便捷地创建Data Guard环境&#xff0c;你甚至不需要将Primary Database shutdown(整个过程中主库都可以处于打开状态下)&#xff0c;也不需要在配置前做一些…

MSP430F5529 DriverLib 库函数学习笔记(十一)I2C / IIC

目录硬知识USCI的I2C模式I2C概述MSP430单片机I2C模块特征及结构框图I2C原理I2C主从操作&#xff08;1&#xff09;从模式&#xff08;2&#xff09;主模式I2C模式下的USCI中断USCI寄存器—I2C模式I2C API (机翻)API介绍主机模式主机模式单字节传输主机模式多字节传输主机模式单…

JVM中可生成的最大Thread数量

最近想测试下Openfire下的最大并发数&#xff0c;需要开大量线程来模拟客户端。对于一个JVM实例到底能开多少个线程一直心存疑惑&#xff0c;所以打算实际测试下&#xff0c;简单google了把&#xff0c;找到影响线程数量的因素有下面几个&#xff1a; -Xms intial java heap s…

使用 Abp.Zero 搭建第三方登录模块(一):原理篇

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

手游server之数据IO进化

这里数据IO是指游戏数据存盘和读取。假设IO处理不好。server在IO时会导致。游戏卡顿较长的时间&#xff0c;严重影响游戏体验。近期服务端刚好对IO这一块做了优化&#xff0c;把优化过程记录一下。一 原始版 刚開始立项的时候&#xff0c;仅仅是做了一个Demo&#xff0c;加上也…

MSP430F5529 DriverLib 库函数学习笔记(十二)I2C实战

目录上机实战I2C给 DAC 芯片 DAC7571 写入数字量DAC7571 介绍程序分析引脚复用I2C 初始化发送一个字节发送一个字读取一个字节读取多个字节中断服务函数整体代码main.cMSP430F5529_I2C.cMSP430F5529_I2C.h实验结果I2C 读取 TMP421 温度TMP421 简介程序摘要TMP421初始化温度的读…

mysqldump造成Buffer Pool污染的研究 [转]

原文链接&#xff1a;http://www.shaoqun.com/m/a/43307.aspx 前言&#xff1a; 最近Oracle MySQL在其官方Blog上贴出了 5.6中一些变量默认值的修改。其中innodb_old_blocks_time 的默认值从0替换成了1000&#xff08;即1s&#xff09; 关于该参数的作用摘录如下&#xff1a; h…

自动加载缓存框架

2019独角兽企业重金招聘Python工程师标准>>> 自动加载缓存框架 代码&#xff0c;请访问github 获取更详情&#xff0c;更新的内容 QQ交流群:429274886&#xff0c;版本更新会在群里通知&#xff0c;能了解最新动态 0.5版本已经是稳定版本了&#xff0c;大家可以放心…

(数据科学学习手札139)geopandas 0.11版本重要新特性一览

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(十三)认识低功耗模式

目录硬知识低功耗模式MSP430单片机各工作模式下的电流消耗API进入低功耗模式退出低功耗模式平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 低功耗模式 MSP430单片机具有7种低功耗模式&#xff08;LPM0…