php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码
最近对操作文件比较感兴趣的说,所以咱们来把文件夹给遍历了,顺便生成个树。
我们要使用的函数有 Scandir,它的作用是列出指定路径中的文件和目录,就像 Dir 一样。
> 与更强力的 Glob() 函数,作用是以数组的形式返回与指定模式相匹配的文件名或目录。
> 友情提醒,千万别像小邪那样在电脑前面呆太长时间,否则就会像小邪一样得见鬼的高血糖。
一. 遍历单层文件夹:
> 在扫描单层文件夹的问题是,两个函数的结果虽有不同,不过表现是相差不大的。
> Scandir 函数会提供额外两行,分别是 “.” 和 “..” ,而 Glob 则是没有的。
function get_dir_scandir(){
$tree = array();
foreach(scandir('./') as $single){
echo $single."
\r\n";
}
}
get_dir_scandir();
function get_dir_glob(){
$tree = array();
foreach(glob('./*') as $single){
echo $single."
\r\n";
}
}
get_dir_glob();
二. 递归遍历文件树:
> 在递归扫描文件夹树的问题上,还是 Glob 函数的表现好一点,很准确的说。
> Scandir 函数会莫名其妙扫描两次 ../ 处的文件,也就是说如果小邪有俩文件。
> ../b.php 和 ../a.php,结果就会在扫描报告上面出现两次,很是奇怪。
//Update at 2010.07.25 - 以下代码作废
$path = '..';
function get_filetree_scandir($path){
$tree = array();
foreach(scandir($path) as $single){
if(is_dir('../'.$single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = '../'.$single;
}
}
return $tree;
}
print_r(get_filetree_scandir($path));
//Update at 2010.07.25 - 以下为新代码
$path = './';
function get_filetree_scandir($path){
$result = array();
$temp = array();
if (!is_dir($path)||!is_readable($path)) return null; //检测目录有效性
$allfiles = scandir($path); //获取目录下所有文件与文件夹
foreach ($allfiles as $filename) { //遍历一遍目录下的文件与文件夹
if (in_array($filename,array('.','..'))) continue; //无视 . 与 ..
$fullname = $path.'/'.$filename; //得到完整文件路径
if (is_dir($fullname)) { //是目录的话继续递归
$result[$filename] = get_filetree_scandir($fullname); //递归开始
}
else {
$temp[] = $filename; //如果是文件,就存入数组
}
}
foreach ($temp as $tmp) { //把临时数组的内容存入保存结果的数组
$result[] = $tmp; //这样可以让文件夹排前面,文件在后面
}
return $result;
}
print_r(get_filetree_scandir($path));
> Glob 函数扫描灰常准确,并且会自动按照字母排好顺序,貌似是最佳方案。
$path = '..';
function get_filetree($path){
$tree = array();
foreach(glob($path.'/*') as $single){
if(is_dir($single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = $single;
}
}
return $tree;
}
print_r(get_filetree($path));
php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码相关推荐
- php递归获取文件夹,php递归遍历文件夹
用递归实现遍历文件夹及其子目录 * ###什么是递归 **递归: 函数不断的调用函数,开辟内存: 是一种典型使用空间换时间的思想(突然间内存被大量占用,效率很高). 当一个函数是为了解决某一个问题的时 ...
- linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...
本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...
- java多线程 文件夹_Java多线程遍历文件夹,广度遍历加多线程加深度遍历结合
复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功 ...
- python批量删除文件1001python批量删除文件_Python实现递归遍历文件夹并删除文件...
思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...
- python修改文件后缀_python实现遍历文件夹修改文件后缀
本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 ...
- linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...
环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...
- java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- php中的递归查找文件夹,PHP递归遍历文件夹
/* 递归遍历文件夹中所有的文件 */ function get_files($dir) { $files = array(); if(!is_dir($dir)) { return $files; ...
- python 文件夹下所有文件_使用Python遍历文件夹下所有文件(包所有含子文件夹)...
我二话不说先贴为敬 def getFile(path,format): print(path) files = os.listdir(path) # 得到文件夹下的所有文件,包含文件夹名称 FileL ...
最新文章
- Java使用Maven加载redis.clients连接Redis
- 第2题——DNA片段
- proc文件系统探索 之 根目录下的文件[七]
- [云炬创业基础笔记]第九章企业的法律形态测试2
- arcmap创建空间索引_mysql搜索引擎你会用了么
- 《又见一帘幽梦》高清视频
- 学习前端开发必读书籍,拥有这几本武功秘籍,让你如有神助
- keras笔记(4)-使用Keras训练大规模数据集
- Java基本语法格式
- 这届年轻人越来越爱养宠物了
- 英华特在创业板提交注册:拟募资约5亿元,股权结构较为分散
- 别嫌工资少,高薪资的标准你符合几条
- 天猫精灵 python_天猫精灵控制ESP8266(Django+micropython)第一节
- 铁甲雄心机器人冠军_机器人格斗元老亮相《铁甲雄心》虽败犹荣
- css实现简单的头像遮罩效果
- 打赏php程序,php全开源视频传输打赏程序源码附带多种支付接口任选选择
- 计算机应用基础贴吧,计算机应用基础,有会做的吗?
- Bootstrap导航条、分页导航
- [python][企业微信]企业微信自动打卡Python脚本,价值一万元的自动打卡脚本
- Word里千分号怎么打?
热门文章
- 介绍一个好用的静态图片合成为 gif 动画的在线网站
- 如何让 Visual Studio Code 里显示 Cypress 的 intelligent code suggestion
- SAP Spartacus使用cxComponentWrapper测试MiniCart
- Jasmine里的describe,it和expect函数
- SAP Spartacus里的converter实例化逻辑
- 因为缺少xs-security.json文件导致的部署错误
- SAP全球技术研发者大会上海站电子票欣赏
- 使用Hybris Commerce User API读取用户信息时,电话字段没有返回
- SAP UI5 library-dbg.js - local location
- 在nodejs websocket回调函数中没法用this