用php递归和迭代创建级联目录

<?php
//递归创建级联目录
 function makedir1($path){
   if(is_dir($path)){//已经是目录了就不用创建
       return true;  
   }
   if(is_dir(dirname($path))){//父目录已经存在,直接创建
    return mkdir($path);
   }
   makedir(dirname($path));//创建各级父目录
   /*
   makedir('./a/b/c/d')
   makedir('./a/b/c')
   makedir('./a/b/')
   */
   return mkdir($path);//因为有父目录,所以可以创建路径
 }
makedir1('./a/b/c/d');
//迭代创建级联目录
function makedir2($path){
  $arr=array();
  while(!is_dir($path)){
  array_push($arr,$path);//把路径中的各级父目录压入到数组中去,直接有父目录存在为止(即上面一行is_dir判断出来有目录,条件为假退出while循环)
    $path=dirname($path);//父目录
  }
  if(empty($arr)){//arr为空证明上面的while循环没有执行,即目录已经存在
    echo $path,'已经存在';
    return true;
  }
 // print_r($arr);//Array ( [0] => aa/bb/cc/dd [1] => aa/bb/cc [2] => aa/bb [3] => aa )
 while(count($arr)){
   $parentdir=array_pop($arr);//弹出最后一个数组单元
   mkdir($parentdir);
   echo '创建'.$parentdir.'成功';
 }
 

}
makedir2('aa/bb/cc/dd');


?>
燕十八公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it

你可能感兴趣的:(用php递归和迭代创建级联目录)