php 简单实用 遍历文件夹代码

本文介绍了两种PHP遍历文件夹及其子目录的方法。第一种使用静态变量和`readdir`函数,第二种使用`scandir`函数进行递归遍历。通过示例代码,展示了如何获取文件或子目录的详细信息,并在控制台输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//第一种:使用while

<?php

    //PHP 遍历文件夹及其子目录

    /*
     * 遍历目录及其子目录
     * @param1 string $path,要遍历的路径
     * @param2 int $level = 0,默认的文件所在目录的层次(距离遍历的顶级目录的距离)
     * @return array,包含了所有文件及其子文件的二维数组
    */
    function myScandir($path,$level = 0){
        //函数最终需要返回数组:先定义一个数组
        static $files = array();

        //从指定的文件夹内读取所有的文件
        //打开文件夹资源
        $o = opendir($path);

        //读取数据:遍历
        while($file = readdir($o)){
            //遍历出所有的文件:一次只遍历一个

            //数据保存:将文件保存到需要输出的数组中
            //将当前遍历得到的文件存放与一个临时文件中
            $temp['name'] = $file;
            $temp['level'] = $level;
            
            //判断数据内容是否是文件夹
            //拼凑路径
            $t_path = $path . '/' . $file;
            if(is_dir($t_path)){
                //是路径
                $temp['is_dir'] = true;
                $files[] = $temp;

                //是文件夹:一定有子文件:与父问题一样
                //排除.和..
                if($file != '.' && $file != '..'){
                    //与父问题一样
                    myScandir($t_path,$level + 1);
                }
            }else{
                //是文件
                $temp['is_dir'] = false;
                $files[] = $temp;
            }
        }

        //返回数据
        return $files;
    }


 //调用
    $path = "../";

    $files = myScandir($path);



<pre name="code" class="php">//第二种:使用scan_folder



$chen=0;
function iscan($dir,$chen){
//定义静态变量
static $arr=array();
//定义当前数组
$cur_arr=array();
//遍历目录
$all=scandir($dir);
//构造空格
$str=str_repeat('&nbsp;&nbsp;',$chen).'+';
  //遍历文件数组
  foreach($all as $k=>$v){
     $f_dir=$dir.'/'.$v.'/';
     $cur_arr[]=$v;
     $cur_arr[]=$chen;
     //判断是否目录或文件
     if(is_dir($f_dir)){
        $cur_arr[]=1;
        echo "{$str}<span style='color:red'>{$v}</span><br/>";
        if($v!='.' && $v!='..'){
        //递归
        iscan($f_dir,++$chen);
        }
     }else{
       $cur_arr[]=0;
       echo $v.'<br/>';
     }
  }
 //添加到二维数组
$arr[]=$cur_arr;
return $arr;
//var_dump($all);
}
echo '<pre>';
var_dump(iscan('./',$chen));


!!超简短便于记忆版本:

 function dir_all ( $path ) {
        $handler = opendir($path);//打开目录
        while (false!==($tmp = readdir($handler))) { //开始遍历目录
            if(is_dir( "$path/$tmp" )) {  //如果还是目录
                if ($tmp=="." | $tmp=="..") continue; //特殊目录不管它
                echo $tmp."<br>\n";//目录也要输出的
                dir_all ("$path/$tmp");//递归当前目录
            } else {
            echo $tmp ."<br>\n";//如果是文件直接输出
            }
        }
  }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值