首页
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
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9832篇
主题总数
7
总热度
提问
+关注
产品动态
2024-05-04
Switch EdiZon SE 金手指插件使用 图文教程
2024-04-29
网御星云入侵防护系统_V6000流量控制配置实例
2024-04-23
电子书在线阅读和下载网址推荐
2024-04-23
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
2024-04-23
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
2024-04-20
《再次成为神》免费下载观看
2024-04-20
《為甚麼會有人類》
2024-04-16
Linux下查询文件夹中文件数量的方法
热点推荐
1
Switch EdiZon SE 金手指插件使用 图文教程
2
网御星云入侵防护系统_V6000流量控制配置实例
3
电子书在线阅读和下载网址推荐
4
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
5
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
6
《再次成为神》免费下载观看
7
《為甚麼會有人類》
8
Linux下查询文件夹中文件数量的方法
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-05-04
Switch EdiZon SE 金手指插件使用 图文教程
2024-04-29
网御星云入侵防护系统_V6000流量控制配置实例
2024-04-23
电子书在线阅读和下载网址推荐
2024-04-23
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
2024-04-23
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
2024-04-20
《再次成为神》免费下载观看
2024-04-20
《為甚麼會有人類》
2024-04-16
Linux下查询文件夹中文件数量的方法
热点推荐
1
Switch EdiZon SE 金手指插件使用 图文教程
2
网御星云入侵防护系统_V6000流量控制配置实例
3
电子书在线阅读和下载网址推荐
4
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
5
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
6
《再次成为神》免费下载观看
7
《為甚麼會有人類》
8
Linux下查询文件夹中文件数量的方法
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。