php历遍文件夹,并以数组方式进行显示

该文章介绍了一个PHP自定义函数directory_map,用于读取指定目录及其子目录中的文件和子文件夹,将其组织成数组。函数接受三个参数:源目录路径、目录遍历深度和是否显示隐藏文件。通过递归方式,它能处理多级目录结构,将文件和目录信息有效地映射到数组中。

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

if(!function_exists('directory_map'))
{
    /*
     * 创建目标映射,就是历遍目录所有文件,并加到数组中,如果是文件夹,则历遍文件夹,并以文件夹为数组键名创建二维数组
     * 读取指定的目录并构建它的数组表示,目录中包含的子文件夹也将被映射
     * @param   string  $source_dir         源路径
     * @param   int     $directory_depth    要遍历的目录深度,0=完全递归,1=当前目录,等等
     * @param   bool    $hidden             是否要显示隐藏文件
     * @return  array
     */
    function directory_map($source_dir,$directory_depth=0,$hidden=false)
    {
        if($fp=@opendir($source_dir))
        {
            $filedata   =   array();
            $new_depth  =   $directory_depth-1;
            $source_dir =   rtrim($source_dir,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;

            while(false !==($file=readdir($fp)))
            {
                //移除'.','..',和隐藏文件[可选]
                if($file==='.' or $file==='..' or ($hidden===false && $file[0]==='.'))
                {
                    continue;
                }

				//判断子文件是否是文件夹,如果是则在后面添加斜杠/
                is_dir($source_dir.$file) && $file .=  DIRECTORY_SEPARATOR;

				//如果遍历深度小于1,或是新深度大于1,及子文件为目录,则递归循环
                if(($directory_depth < 1 or $new_depth >0) && is_dir($source_dir.$file))
                {
                    $filedata[$file]=directory_map($source_dir.$file,$new_depth,$hidden);
                }
                else
                {
                    $filedata[]=$file;
                }
            }
            closedir($fp);
            return $filedata;
        }
        return false;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值