zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    vs.net 2005, 没有找到MSVCR80D.dll的完美解决方案
    C++内存布局从一个修改私有变量的问题想到的
    堆栈详解
    加载.x文件
    深入分析规则引擎
    高级着色语言HLSL入门(5)
    字符数组,字符指针,Sizeof总结
    C++ 隐式和显式 初始化,类型转换
    fread()和fwrite()函数分析
    结构体 对齐的问题
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/5682965.html
Copyright © 2011-2022 走看看