方法一:

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-递归创建级联目录的更多相关文章

  1. 利用php函数mkdir递归创建层级目录

    项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等.这不当前手下的项目就用到了这个,于是总结了几个循环创建层级目录的方法. php默认的mkdir一次只能创建一层目录,而 ...

  2. php使用递归创建多级目录

    <?php header('Content-type:text/html;charset=utf8'); echo "Loading time:".date('Y-m-d H ...

  3. PHP判断文件夹是否存在和创建文件夹的方法(递归创建多级目录)

    在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了,那如何用mkdir来创建呢?先我抄一段 ...

  4. PHP递归创建多级目录(一道面试题的解题过程)

    今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...

  5. 根据CreateDirectory递归创建多级目录

    分为MFC下的和非MFC下的两种,MFC路径是CString类型的,非MFC的路径是wstring类型的. 下面是MFC下的创建目录: void __fastcall RecursiveDirecto ...

  6. node.js 递归创建多级目录

    fs.mkdir只能创建一级目录,所以我们可以自定义一个mkdirs函数,利用递归和回调来实现创建多级目录. function mkdirs(dirname, callback) { //检测目录是否 ...

  7. PHP递归创建多级目录(一道面试题的解题过程)(转)

      今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @m ...

  8. php-迭代创建级联目录

    方法一代码: path = './a/b/c/d/e/f'; $path_arr = explode('/',$path);//得到数组array('.','a','b','c','d','e','f ...

  9. PHP中使用mkdir创建多级目录的方法

    function mkdirs($dir)    {    if(!is_dir($dir))    {    if(!mkdirs(dirname($dir))){    return false; ...

随机推荐

  1. 题目八 one + two = 3 soj

    读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出. 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两 ...

  2. 实践作业1:测试管理工具实践 Day4

    由小组吴辉同学和王俊杰同学负责撰写使用手册,详细记录了环境配置完整过程,以及从软件登陆开始,创建一个测试计划,创建新版本,创建测试用例集,分配测试用例到测试计划,关联到测试用例这一系列完整过程. 刘思 ...

  3. JavaSE之绘制菱形

    在JavaSE的算法练习中,绘制菱形是一个比较常见的案例.菱形效果如下图所示: 我们在解决算法问题时,通常情况下,先不要急于马上编码,而是要先观察,找出解决问题的关键所在. 在上图中,我们可以看到,菱 ...

  4. How to support comparators in our sort implementations?

    上图是普林斯顿算法课part1.Mergesort章节给出的参考代码,可以发现这个代码有三处警告.造成的隐患就是我们无法在类型检查时发现送入sort()函数的数组元素类型和Comparator的泛型不 ...

  5. 迭代加深搜索POJ 3134 Power Calculus

    题意:输入正整数n(1<=n<=1000),问最少需要几次乘除法可以从x得到x的n次方,计算过程中x的指数要求是正的. 题解:这道题,他的结果是由1经过n次加减得到的,所以最先想到的就是暴 ...

  6. Qt快速上手(学习笔记四)

    拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...

  7. Azure ARM (19) 将传统的ASM VM迁移到ARM VM (2)

    <Windows Azure Platform 系列文章目录> 因为我们在上一节中: Azure ARM (18) 将传统的ASM VM迁移到ARM VM (1) 已经创建了Azure V ...

  8. Struts2入门到放弃

    写在前面------------------------------------------------------------------------- 本文章主要从三个方面来学习Struts2框架 ...

  9. SSH中的免password登录

    1:运行命令  ssh-keygen -t rsa 产生秘钥 ,位于~/.ssh目录下(假设在这期间有什么提示.一路敲击enter下去,什么都不用输入) 2:运行命令 cp  ~/.ssh/id_rs ...

  10. recover all files with git

    leon@DGLIRUAN2 /F/linux/android/leon/workspace/AngoWidget (master) $ git log commit 2f847e3a858ecb2f ...