• 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创建成功

  • 相关阅读:
    腾讯2022暑期实习服务器被挤爆,23届校招难度升级,该如何去准备?
    【校招VIP】出品:校招java大厂之 java考点5(jvm三大考点) 校招VIP
    【校招VIP|产品】从脑图到原型图
    博客互挂友链
    反爬虫技术和爬虫特点
    有时候你不逼自己一把,根本不知道自己潜力有多大
    阿里技术专家?10年+工作经验?架构能力不错但是….
    解决浏览器跨域问题
    Spring 最常用工具类汇总
    sass语言
  • 原文地址:https://www.cnblogs.com/dee0912/p/4298293.html
Copyright © 2020-2023  润新知