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);

原文地址:https://www.cnblogs.com/YangJieCheng/p/5682965.html