php-递归创建级联目录
方法一:
function mk_dir($path_arr,$root){
if(!empty($path_arr)){
static $path;//每次保存上次调用的值
$path .= '/'.$path_arr[0];
if(!is_dir($path)){
if( mkdir($root.$path)){
$flag = true;
}else{
$flag = false;
} }
array_shift($path_arr);//将数组开头的单元移出数组
mk_dir($path_dir,$root);
return $flag;
}
}
$dir = './a/b/c/d/e/f';
if(is_dir($dir)){
echo $dir,'已经是目录了';
exit;
}
$dir_arr = explode('/',$dir);//将路径分割成数组
$root = array_shift($dir_arr);//取得. 或者 .. 或者 绝对路径的最上级目录
echo mk_dir($dir_arr,$root)?'ok':'fail';
方法二:
function mk_dir($path){
//最好的情况就是$path 以及存在
if(is_dir($path)){return true;}
//再好点的情况就是$path的上级目录已经存在 则 直接创建之
if(is_dir(dirname($path)))
return mkdir($path);
//最坏的情况就是$path的上级目录不存在,则先递归创建上级目录
mk_dir(dirname($path));
return mkdir($path);
}
echo mk_dir('./aa/bb/cc/dd')?'ok':'fail';
方法三:
function mk_dir($path){
if(is_dir($path)){return true;}
/*
创建 $path的前提是它的上级目录存在
上级目录:已经存在 或者 我们先创建好上级目录
*/
return is_dir(dirname($path)) || mk_dir(dirname($path))?mkdir($path):false;
}
echo mk_dir('./aa/bb/cc/dd')?'ok':'fail';
方法四:
使用 php 5 版本以上的 mkdir()
例如 mkdir('../a/b/c/d',0777,true);
php-递归创建级联目录的更多相关文章
- 利用php函数mkdir递归创建层级目录
项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等.这不当前手下的项目就用到了这个,于是总结了几个循环创建层级目录的方法. php默认的mkdir一次只能创建一层目录,而 ...
- php使用递归创建多级目录
<?php header('Content-type:text/html;charset=utf8'); echo "Loading time:".date('Y-m-d H ...
- PHP判断文件夹是否存在和创建文件夹的方法(递归创建多级目录)
在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段 ...
- PHP递归创建多级目录(一道面试题的解题过程)
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...
- 根据CreateDirectory递归创建多级目录
分为MFC下的和非MFC下的两种,MFC路径是CString类型的,非MFC的路径是wstring类型的. 下面是MFC下的创建目录: void __fastcall RecursiveDirecto ...
- node.js 递归创建多级目录
fs.mkdir只能创建一级目录,所以我们可以自定义一个mkdirs函数,利用递归和回调来实现创建多级目录. function mkdirs(dirname, callback) { //检测目录是否 ...
- PHP递归创建多级目录(一道面试题的解题过程)(转)
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @m ...
- php-迭代创建级联目录
方法一代码: path = './a/b/c/d/e/f'; $path_arr = explode('/',$path);//得到数组array('.','a','b','c','d','e','f ...
- PHP中使用mkdir创建多级目录的方法
function mkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ return false; ...
随机推荐
- “核弹级”Android漏洞Janus,黑客可以任意篡改App
美国时间12月9日,Google披露了一个名为"Janus"安卓漏洞.该漏洞可以让攻击者绕过安卓签名机制,从而让攻击者对App进行篡改,安卓5.0到8.0等个版本系统均受影响. 顶 ...
- MYSQL瓶颈
一般来说, 在使用的时候 性能从某个数值开始.突然大大下降,说明就到了瓶颈期. mysql 瓶颈有2种,一种是 cpu瓶颈 一种是 io瓶颈.cpu瓶颈多是由io引起. 而io可以通过 show ...
- SVN如何commit(提交)项目代码
在本地代码做出变更之后,我们就需要通过svn commit命令提交到远程服务端 工具/原料 SVN客户端 方法/步骤 选中需要更新的代码文件夹或目录,点击右键,选择"Tortoise ...
- Web前端学习——CSS
一.CSS简介CSS全称cascading style sheeding,层叠样式列表.CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化.二.CSS组成1.选择器(1) ...
- Android Weekly Notes Issue #287
Android Weekly Issue #287 December 10th, 2017 Android Weekly Issue #287 圣诞节快要来了,小编也偷懒了,本期内容包括如何通过AS添 ...
- Tomcat 源码分析(一)——启动与生命周期组件
写在前面的话:读Tomcat源码也有段时间了,大领悟谈不上.一些小心得记录下来,供大家参考相护学习. 一.启动流程 Tomcat启动首先需要熟悉的是它的启动流程.和初学者第一天开始写Hello Wor ...
- 编译器 STVD 与 IAR 的差别 个人体验
编译器 STVD 与 IAR 的一些差别,这些事个人的体验,欢迎扔砖和指点或者补充. 1:全局查找功能: STVD:全局查找功能全局查找功能比較麻烦.有3个动作. IAR:有全局查找功能比較方便.仅仅 ...
- Java中string 创建对象时 “”和null的差别
null和""的差别 问题一: null和""的差别 String s=null; string.trim()就会抛出为空的exception String s ...
- HTTP请求中怎样选择Get和Post方式
在应用中最经常使用的Http请求无非是get和post,get请求能够获取静态页面,也能够把參数放在URL字串后面,传递给servlet.post与get的不同之处在于post的參数不是放在URL字串 ...
- 为什么MOBA、“吃鸡”游戏不推荐用tcp协议——实测数据
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法. ...