php 递归创建目录、递归删除非空目录、迭代创建目录

递归创建目录

方法一

 1 function mk_dir($path){
 2     if(is_dir($path)){  //参数本身是一个目录
 3         return true;
 4     }
 5 
 6     if(is_dir(dirname($path))){ //参数的父目录是一个目录,则创建目录
 7         return mkdir($path);
 8     }
 9 
10     mk_dir(dirname($path));  
11     return mkdir($path);
12 }
13 
14 $path = './a/b/c/d/e';
15 echo mk_dir($path)?'OK':'Fail';

方法二

 1 function mk_dir($path){
 2     if(is_dir($path)){
 3         return true;
 4     }
 5 
 6     return is_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false;
 7 }
 8 
 9 $path = './a/aa';
10 echo mk_dir($path)?'ok':'fail';

递归删除非空目录:

 1 function deldir($path){
 2     if(!is_dir($path)){
 3         return '不是目录';
 4     }
 5 
 6     $dh = opendir($path);
 7     while(($res = readdir($dh)) !== false){
 8         //排除 . 和 ..
 9         if($res == '.' || $res == '..'){
10             continue;
11         }
12 
13         if(!is_dir($path.'/'.$res)){    //是文件,直接删除
14             unlink($path.'/'.$res);
15         }else{    //是目录,递归调用
16             deldir($path.'/'.$res);
17         }
18     }
19     closedir($dh);
20     rmdir($path);
21     echo "删除".$path.'<br />';
22     return 'success';
23 }
24 
25 echo deldir('./aa');

迭代创建目录

方法一

 1 function mk_dir($path){
 2     $arr = array();
 3     while(!is_dir($path)){
 4         array_unshift($arr, $path); //Array ( [0] => ./a [1] => ./a/b [2] => ./a/b/c [3] => ./a/b/c/d [4] => ./a/b/c/d/e ) 
 5         $path = dirname($path);
 6     }
 7 
 8     //print_r($arr);
 9 
10     if(empty($arr)){
11         return true;
12     }
13 
14     foreach ($arr as $v) {
15         mkdir($v);
16         echo '创建'.$v.'成功<br />';
17     }        
18 }
19 
20 mk_dir('./a/b/c/d/e');

创建./a成功
创建./a/b成功
创建./a/b/c成功
创建./a/b/c/d成功
创建./a/b/c/d/e成功

方法二

function mk_dir($path){
    $arr = array();
    while(!is_dir($path)){
        array_push($arr, $path); //Array ( [0] => ./a/b/c/d/e [1] => ./a/b/c/d [2] => ./a/b/c [3] => ./a/b [4] => ./a )
        $path = dirname($path);
    }

    //print_r($arr);

    if(empty($arr)){
        return true;
    }

    while(count($arr)){
        $tmp = array_pop($arr);
        mkdir($tmp);
        echo $tmp.'创建成功<br />';
    }        
}

mk_dir('./a/b/c/d/e');

./a创建成功
./a/b创建成功
./a/b/c创建成功
./a/b/c/d创建成功
./a/b/c/d/e创建成功

原文地址:https://www.cnblogs.com/dee0912/p/4298293.html