请选择
进入手机版
|
继续访问电脑版
首页
Portal
业界资讯
社区
BBS
我的家园
Space
个人空间
导读
Guide
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
帖子
好友
道具
勋章
收藏
任务
淘帖
门户
导读
设置
我的收藏
退出
腾讯QQ
微信登录
首页
›
≡≡网络技术≡≡
›
PHP语言
›
PHP遍历文件夹目录;获取文件夹目录数组 ...
返回列表
PHP
PHP遍历文件夹目录;获取文件夹目录数组
[ 复制链接 ]
灰儿
2017-2-11 21:41:14
最近在写图片空间管理系统,需要遍历文件夹目录,百度了一下,发现了下面的第一个方法。但是想把文件夹目录结构保存到数组。就有了下面第二个自己写的方法。
PHP遍历文件夹目录或文件目录,直接输出结果。
原文:
PHP遍历文件夹及子文件夹所有文件
https://www.cnblogs.com/zemliu/archive/2012/05/04/2482614.html
代码:
<html>
<body>
<?php
function traverse($path = '.') {
$current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false
while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径
if($file == '.' || $file == '..') {
continue;
} else if(is_dir($sub_dir)) { //如果是目录,进行递归
echo 'Directory ' . $file . ':<br>';
traverse($sub_dir);
} else { //如果是文件,直接输出
echo 'File in Directory ' . $path . ': ' . $file . '<br>';
}
}
}
traverse('xxtt');
?>
</body>
</html>
复制代码
遍历文件夹目录或文件目录,并将目录结构写入数组。
由于上面的函数会循环嵌套自身,所以不便于数组的记录。需要重新写一个单层的遍历函数,然后循环调用。
function traverse_sigle_folder($path = '.') {
$current_dir = opendir($path);
//opendir()返回一个目录句柄,失败返回false
$i = 0;
$folder = array();
//用数组记录目录结构
while(($file = readdir($current_dir)) !== false) {
//readdir()返回打开目录句柄中的一个条目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file;
//构建子目录路径
if($file == '.' || $file == '..') {
continue;
}else if(is_dir($sub_dir)) {
$folder[$i]['file_name'] = $file; //文件名
$folder[$i]['file_type'] = 'directory'; //文件夹类型
$i++;
//这里去掉了循环嵌套
}else{
//如果是文件,直接输出
$folder[$i]['file_name'] = $file;
$type = ltrim(strchr($file,'.'),'.');
//截取文件名后缀名 判断是否为图片
switch($type){
case 'jpg':
case 'JPG':
case 'gif':
case 'GIF':
case 'jpeg':
case 'JPEG':
case 'bmp':
case 'BMP':
case 'png':
case 'PNG':
$folder[$i]['file_type'] = 'image';
//图片类型
break;
default:
$folder[$i]['file_type'] = 'file';
//其他类型文件
break;
}
$i++;
}
}
return $folder;
}
使用单层遍历函数,将文件目录结构写入数组:
$path = './Uploads/';
$array = traverse_sigle_folder($path); //首次调用单层遍历函数 获取第一层级目录结构
foreach($array as $k => $v){
if($v['file_type'] == 'directory'){
$array[$k]['files'] = traverse_sigle_folder($path.'/'.$array[$k]['file_name']); //这里假设目录只有3层,如果有多层可以再变化一下
}
}
这样就获得了目录数组:$array.
echo '
';
var_dump($array);
结果是类似这样的:
相关帖子
打开含有AVI的文件夹出现explorer.exe-应用程序错误的解决方法
php自动读取文件夹下所有图片并分页显示
win7系统如何用自带的锁密工具对电脑里的文件夹进行加密?
win7 32位系统打开带点的特殊文件夹(畸形目录)的方法
江湖家居6.0标准版手工升级到6.0至尊版方法
PHP获取文件夹下所有子文件夹的名称及子文件夹所有图片
安卓手机系统怎么访问win10的共享文件夹
使用php scandir函数遍历文件夹目录和所有文件
php遍历目录与文件夹的多种方法详解
使用PHP遍历文件夹与子目录的函数代码
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
回复
(1)
灰儿
楼主
2017-2-11 22:42:26
<?php
$path = '.';
$current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false
$i = 0;
$folder = array(); //用数组记录目录结构
while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径
if($file == '.' || $file == '..') {
continue;
}else if(is_dir($sub_dir)) {
$folder[$i]['file_name'] = $file; //文件名
$folder[$i]['file_type'] = 'directory'; //文件夹类型
$i++;
//这里去掉了循环嵌套
}else{ //如果是文件,直接输出
$folder[$i]['file_name'] = $file;
$type = ltrim(strchr($file,'.'),'.'); //截取文件名后缀名 判断是否为图片
switch($type){
case 'jpg':
case 'JPG':
case 'gif':
case 'GIF':
case 'jpeg':
case 'JPEG':
case 'bmp':
case 'BMP':
case 'png':
case 'PNG':
$folder[$i]['file_type'] = 'image'; //图片类型
break;
default:
$folder[$i]['file_type'] = 'file'; //其他类型文件
break;
}
$i++;
}
}
print_r($folder);
?>
回复
支持
反对
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9820篇
主题总数
7
总热度
提问
+关注
产品动态
2024-03-28
在线网络子网掩码和IP地址范围计算器
2024-03-26
神州数码云科(DCN)交换机WEB管理界面重启交换机设备方法
2024-03-24
路由器和三层交换机的ACL(访问控制列表)和防火墙安全策略
2024-03-24
三层交换机与路由器配置上网
2024-03-24
3层交换机vlan互访还需要设置回程路由吗?
2024-03-23
网御星云_V6000_P1320安全网关内网访问互联网路由模式配置
2024-03-14
网络路由跟踪命令tracert与traceroute命令详解
2024-03-13
神州数码DCFW-1800E-N6002防火墙路由器SSL VPN设置教程
热点推荐
1
在线网络子网掩码和IP地址范围计算器
2
神州数码云科(DCN)交换机WEB管理界面重启交换机设备方法
3
路由器和三层交换机的ACL(访问控制列表)和防火墙安全策略
4
三层交换机与路由器配置上网
5
3层交换机vlan互访还需要设置回程路由吗?
6
网御星云_V6000_P1320安全网关内网访问互联网路由模式配置
7
网络路由跟踪命令tracert与traceroute命令详解
8
神州数码DCFW-1800E-N6002防火墙路由器SSL VPN设置教程
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-03-28
在线网络子网掩码和IP地址范围计算器
2024-03-26
神州数码云科(DCN)交换机WEB管理界面重启交换机设备方法
2024-03-24
路由器和三层交换机的ACL(访问控制列表)和防火墙安全策略
2024-03-24
三层交换机与路由器配置上网
2024-03-24
3层交换机vlan互访还需要设置回程路由吗?
2024-03-23
网御星云_V6000_P1320安全网关内网访问互联网路由模式配置
2024-03-14
网络路由跟踪命令tracert与traceroute命令详解
2024-03-13
神州数码DCFW-1800E-N6002防火墙路由器SSL VPN设置教程
热点推荐
1
在线网络子网掩码和IP地址范围计算器
2
神州数码云科(DCN)交换机WEB管理界面重启交换机设备方法
3
路由器和三层交换机的ACL(访问控制列表)和防火墙安全策略
4
三层交换机与路由器配置上网
5
3层交换机vlan互访还需要设置回程路由吗?
6
网御星云_V6000_P1320安全网关内网访问互联网路由模式配置
7
网络路由跟踪命令tracert与traceroute命令详解
8
神州数码DCFW-1800E-N6002防火墙路由器SSL VPN设置教程
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。