php高效遍历目录文件及子目录
2016-08-07 20:48
330 查看
如果目录很多,推荐队列方式,递归方式会慢,慢的原因:递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等
<?php
//递归方式
function read_dir($dir){
$files=array();
$dir_list=scandir($dir);
foreach($dir_list as $file){
if($file!='..' && $file!='.'){
if(is_dir($dir.'/'.$file)){
$files[]=read_dir($dir.'/'.$file);
}else{
$files[]=$file;
}
}
}
return $files;
}
//队列方式
function read_dir_queue($dir){
$files=array();
$queue=array($dir);
while($data=each($queue)){
$path=$data['value'];
if(is_dir($path) && $handle=opendir($path)){
while($file=readdir($handle)){
if($file=='.'||$file=='..') continue;
$files[] = $real_path=$path.'/'.$file;
if (is_dir($real_path)) $queue[] = $real_path;
}
}
closedir($handle);
}
return $files;
}
print_r(read_dir_queue('D:/webroot/suanfa/dir'));exit;
<?php
//递归方式
function read_dir($dir){
$files=array();
$dir_list=scandir($dir);
foreach($dir_list as $file){
if($file!='..' && $file!='.'){
if(is_dir($dir.'/'.$file)){
$files[]=read_dir($dir.'/'.$file);
}else{
$files[]=$file;
}
}
}
return $files;
}
//队列方式
function read_dir_queue($dir){
$files=array();
$queue=array($dir);
while($data=each($queue)){
$path=$data['value'];
if(is_dir($path) && $handle=opendir($path)){
while($file=readdir($handle)){
if($file=='.'||$file=='..') continue;
$files[] = $real_path=$path.'/'.$file;
if (is_dir($real_path)) $queue[] = $real_path;
}
}
closedir($handle);
}
return $files;
}
print_r(read_dir_queue('D:/webroot/suanfa/dir'));exit;
相关文章推荐
- php队列方式和递归方式遍历目录文件及子目录
- php递归遍历所有目录及子目录和文件实例
- php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
- 遍历目录及子目录列出所有文件和文件夹的代码
- shell 脚本实现的遍历目录修改子目录及其文件权限
- PHP ZipArchive::extractTo()函数.zip文件目录遍历漏洞
- java遍历目录及子目录下的文件
- 用非递归方式遍历目录及其子目录的文件
- PHP远程文件管理,可以给表格排序,遍历目录,时间排序
- php遍历整个目录的文件以及文件夹
- PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
- 用命令行操作遍历目录,查找文件的PHP代码
- PHP远程任意文件读取及目录遍历漏洞
- PHP遍历文件目录笔记
- php遍历目录及文件
- 遍历一个目录(含子目录)下所有文件
- 采用非递归方式遍历目录及其子目录的文件
- php更改目录及子目录下所有的文件后缀的代码
- C#遍历目录下的所有子目录和文件
- 遍历一个指定的目录(包含子目录和文件),用Jdom把该目录的树形结构写入xml文件中