Ted's Blog



php 遍历目录下所有目录及文件


直接上代码 简单粗暴

<?php

    $arr_dir = [];
    $path    = '.';
    //递归读取目录结构到数组中并保存目录结构
    function makeDir($path,&$arr)
    {
        $dir = opendir($path);          //返回当前目录的句柄资源

        while(($file=readdir($dir))!==FALSE)        //遍历 从目录句柄中读取条目
        {

            if($file!='.'&&$file!='..')
            {
                if(!is_dir($path.'/'.$file))        //如果当前不是目录
                {
                    $arr[] = $file;                 //将文件名赋给所属的目录数组
                }
                else
                {
                    makeDir($path.'/'.$file, $arr[$file]);  //递归处理目录  参数1 是要处理的子目录   参数2  定义一个目录的数组
                }
            }
        }
        closedir($dir);
    }
    makeDir($path, $arr_dir);

    echo "<pre>";
    print_r($arr_dir);



    showTable($arr_dir);



    function showTable($data,$parent = './',$num = 0){

        if(is_array($data)){

            foreach ($data as $_k=>$_v){

                if(is_array($_v)){
                    echo "<span style=\"margin-left: $num\">【目录】<a href=''>删除</a>   {$parent}{$_k}</span><br/>";
                    showTable($_v,$parent.$_k.'/',$num+=100);
                }else{
                    $file_num  = $num-70;
                    echo "<span style=\"margin-left: $file_num\">【文件】$_v</span><br/>";
                }

            }

        }
    }


    delDirAndFile('.');

    //循环删除目录和文件函数
    function delDirAndFile( $dirName )
    {
        if ( $handle = opendir( $dirName ) ) {
            while ( false !== ( $item = readdir( $handle ) ) ) {
                if ( $item != "." && $item != ".." ) {
                    if ( is_dir( "$dirName/$item" ) ) {
                        delDirAndFile( "$dirName/$item" );
                    } else {
                        echo "<br/>成功删除文件: $dirName/$item";
    //                    if( unlink( "$dirName/$item" ) ){
    //                        echo "成功删除文件: $dirName/$item";
    //                    }

                    }
                }
            }
            closedir( $handle );
            echo "<br/>成功删除目录: $dirName<br/>";
    //        if( rmdir( $dirName ) ){
    //            echo "成功删除目录: $dirName\n";
    //        }
        }
    }
    
    
?>


分享:

写评论


Contact ME

github:https://github.com/tebie6

email:liumingyuphp@163.com

友情链接

无敌我大鑫哥:http://dream128.cn