php-迭代创建级联目录

方法一代码:

path = ‘./a/b/c/d/e/f‘;
  $path_arr = explode(‘/‘,$path);//得到数组array(‘.‘,‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘);
  for($i=0;$i<count($path_arr);$i++){
      static $dir;//只初始化一次,保留上次调用的值
      $dir .= $path_arr[$i].‘/‘;//i=0 ./ i=1 ./a i=2 ./a/b .....
      //echo $dir,‘<br/>‘;
      if(!is_dir($dir)){//过滤下 如果已经是目录就不创建 比如 ./
          echo mkdir($dir)?‘ok<br/>‘:‘fail<br/>‘;//创建
       }
  }

方法二代码:

 function mk_dir($dir){

               //$dir_arr  = array();//定义一个空数组用来存放路径  可以把它想象成为一个工作单

               while(!is_dir($dir)){ //如果$dir不是目录  那么就表示这个工作还没做 因此就放入工作单里

         array_push($dir_arr,$dir);

        $dir = dirname($dir);//取得上级目录在赋值给$dir 

      }

              //上面是把新工作(不是目录的)存入到数组

           while(count($dir_arr)){

            $list = array_pop($dir_arr);

                                      mkdir($list);

      }

    //通过出栈 来层层创建目录

}

$path =‘./a/b/c/d‘;

mk_dir($path);

模拟过程:

$dir = ‘./a/b/c/d‘;

$dir 不是目录,进入循环

$dir_arr =array(‘./a/b/c/d‘);

$dir = dirname($dir)=‘./a/b/c‘;

$dir 不是目录,进入循环

$dir_arr =array(‘./a/b/c/d‘,‘./a/b/c‘);

    $dir = dirname($dir)=‘./a/b‘;

    $dir 不是目录,进入循环

    $dir_arr =array(‘./a/b/c/d‘,‘./a/b/c‘,‘./a/b‘);

$dir = dirname($dir)=‘./a‘;

    $dir 不是目录,进入循环

    $dir_arr =array(‘./a/b/c/d‘,‘./a/b/c‘,‘./a/b‘,‘./a‘);

$dir = dirname($dir)=‘./‘;

  $dir 是目录,退出循环

------------------------------------------------

<退出循环后的数组>array(‘./a/b/c/d‘,‘./a/b/c‘,‘./a/b‘,‘./a‘);

进入 出栈循环

count($dir_arr) =4  进入循环

$list = array_pop($dir_arr) = ‘./a‘;

mkdir($list);//a目录创建

count($dir_arr) =3  进入循环

$list = array_pop($dir_arr) = ‘./a/b‘;

mkdir($list);//a/b目录创建

count($dir_arr) =2  进入循环

$list = array_pop($dir_arr) = ‘./a/b/c‘;

mkdir($list);//a/b/c目录创建

count($dir_arr) =1  进入循环

$list = array_pop($dir_arr) = ‘./a/b/c/d‘;

mkdir($list);//a/b/c/d目录创建

count($dir_arr) =0  退出循环

----------------------------------------

总结:递归换成迭代的 要 借助栈的思想或者static

级联创建目录的思想 还是想必须把上级目录创建成功

时间: 2024-10-16 14:47:32

php-迭代创建级联目录的相关文章

迭代创建级联目录

1 //用迭代创建级联目录 2 function mk_dir($path){ 3 $arr = array(); 4 5 while (!is_dir($path)) { 6 array_unshift($arr, $path);//往数组的头部添加元素 7 8 $path = dirname($path);//这个很重要,上一层目录 9 } 10 11 if(empty($arr)){ 12 return true; 13 } 14 15 foreach ($arr as $v) { 16

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

项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等.这不当前手下的项目就用到了这个,于是总结了几个循环创建层级目录的方法. php默认的mkdir一次只能创建一层目录,而要逐层创建各级目录的话,一般都是先从父创建,然后逐层往下创建,但是这样手工创建的话,有点太过于麻烦了. 我们写程序是做什么的?不久是为了能自动化实现我们需要的功能么,这里的方法就是为了能够通过程序帮我们自动创建完成层级目录. Ruesin.com 思路有两种: 一.从上往下(父级→子级) 1.先判断

php创建多级目录完整封装类操作

创建多级目录函数中调用创建指定下的指定文件的函数: public function create_dir($dir,$mode=0777) { return is_dir($dir) or ($this->create_dir(dirname($dir)) and mkdir($dir, $mode)); } 创建指定路径下的指定文件,string $path(需要包含文件名和后缀),boolean $over_write 是否覆盖文件,int $time 设置时间.默认是当前系统时间,int

创建层级目录命令mkdir -p

[[email protected] ~]# mkdir -p /home/pm/{etc/x1,lib,usr/{u1,u2},bin,tmp/{y1,y2,y3/k},opt,var} 用上面的方式创建任意复杂的目录树结构.注意这仅仅是一个普通的命令,但是用 '{}' 来创建层级目录.需要的时候如果在 shell 脚本中使用是非常有用的. [[email protected] ~]# tree /home/pm /home/pm ├── bin ├── etc │   └── x1 ├──

Java File类 mkdir 不能创建多层目录,如果是多层,可以调mkdirs

public static void createDir(String destDirName) { File dir = new File(destDirName); if (!dir.exists()) {// 判断目录是否存在 dir.mkdir(); //dir.mkdirs(); //多层目录需要调用mkdirs } }   注意:在JavaFile类 的mkdir方法的实现中,不能同时创建多层目录,如果是多层,可以调mkdirs!

XENAPP 7.6 和 XENDESKTOP 7.6 初体验之四 创建桌面计算机目录

阅读全文 创建桌面计算机目录过程如下: 首先打开Citrix Studio,单击"计算机目录" ,点击"创建计算机目录": 选择"Windows桌面操作系统",点击"下一步". 保持默认选项,点击"下一步". 这边我们选择创建一个Dedicated ,静态虚拟机: 找到我们刚才安装VDA的那台Windows7企业版 ,选择从这台机子为主映像. 我们可以看到这个计算机目录已经创建好了,同样在XenServer

[php] PHP创建指定目录和文件

前几天看到有人问PHP环境下如何创建文件到指定目录下,正好自己最近在学习,经过一翻测试,终于出结果了,贴出来与大家分享. 目录结构:代码所在的文件wwwroot/mydir/test/test.php 创建目录:在wwwroot/mydir/下创建目录testjiang123. 创建文件:在wwwroot/mydir/testjiang123/下创建文件test.html. //创建文件夹 $username="testjiang123"; $dir="../mydir/&q

1.5.2 添加一个用户lidao指定uid为888 禁止用户登录系统 不创建家目录

添加一个用户lidao指定uid为888 禁止用户登录系统 不创建家目录 #添加一个傀儡用户lidao 并指定这个用户的uid为888 [[email protected]~]# #添加一个用户lidao指定uid为888 禁止用户登录系统 不创建家目录 [[email protected]~]# useradd -u 888 -s /sbin/nologin -M lidao888 [[email protected]~]# id lidao888 uid=888(lidao888)gid=8

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

PHP中使用mkdir()可以创建多级目录,相比之前自己一级一级的创建,这个函数非常好用. 下面是php手册上的函数介绍: bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] ) 返回值为bool类型. 第一个参数:必须,代表要创建的多级目录的路径: 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权: 第三个参数:true表示