<?php
//方法一:使用glob循环 function myscandir1($path, &$arr) { foreach (glob($path) as $file) {
if (is_dir($file)) {
myscandir1($file . '/*', $arr);
} else { $arr[] = realpath($file);
}
}
} //方法二:使用dir && read循环
function myscandir2($path, &$arr) { $dir_handle = dir($path);
while (($file = $dir_handle->read()) !== false) { $p = realpath($path . '/' . $file);
if ($file != "." && $file != "..") {
$arr[] = $p;
} if (is_dir($p) && $file != "." && $file != "..") {
myscandir2($p, $arr);
}
}
} //方法三:使用opendir && readdir循环
function myscandir3($path, &$arr) { $dir_handle = opendir($path);
while (($file = readdir($dir_handle)) !== false) { $p = realpath($path . '/' . $file);
if ($file != "." && $file != "..") {
$arr[] = $p;
}
if (is_dir($p) && $file != "." && $file != "..") {
myscandir3($p, $arr);
}
}
} //方法四:使用scandir循环
function myscandir4($path, &$arr) { $dir_handle = scandir($path);
foreach ($dir_handle as $file) { $p = realpath($path . '/' . $file);
if ($file != "." && $file != "..") {
$arr[] = $p;
}
if (is_dir($p) && $file != "." && $file != "..") {
myscandir4($p, $arr);
}
}
} //方法五:使用SPL循环
function myscandir5($path, &$arr) { $iterator = new DirectoryIterator($path);
foreach ($iterator as $fileinfo) { $file = $fileinfo->getFilename();
$p = realpath($path . '/' . $file);
if (!$fileinfo->isDot()) {
$arr[] = $p;
}
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
myscandir5($p, $arr);
}
}
} //可以用xdebug测试运行时间
myscandir1('./Code',$arr1);//0.164010047913
myscandir2('./Code',$arr2);//0.243014097214
myscandir3('./Code',$arr3);//0.233012914658
myscandir4('./Code',$arr4);//0.240014076233
myscandir5('./Code',$arr5);//0.329999923706 //需要安装xdebug
echo xdebug_time_index(), "\n";
?>

PHP递归目录的5种方法的更多相关文章

  1. C#中得到程序当前工作目录和执行目录的五种方法

    string str="";str += "\r\n" + System.Diagnostics.Process.GetCurrentProcess().Mai ...

  2. Mac 中显示资源库(Library)文件夹目录的几种方法

    Mac中Library目录在10.6.7系统之后默认隐藏的,要想找到此文件夹有如下几种方法:   1. 用命令可以使其显示: 在终端中执行命令: chflags nohidden ~/Library ...

  3. Java 添加Word目录的2种方法

    目录是一种能够快速.有效地帮助读者了解文档或书籍主要内容的方式.在Word中,插入目录首先需要设置相应段落的大纲级别,根据大纲级别来生成目录表.本文中生成目录分2种情况来进行: 1.文档没有设置大纲级 ...

  4. Word 插入目录的 5 种方法

    1. "运用多级编号法"之图文教程 效果图: 步骤: 首先,为了更好的演示,我们先将我们的一级标题全部选中,按住Ctrl键,去一一选择就行了. 选中一级标题后,我们进入「开始」-「 ...

  5. php创建多级目录的两种方法

    1.使用递归的思想 function mkdirs_2($path){ if(!is_dir($path)){ mkdirs_2(dirname($path)); if(!mkdir($path, 0 ...

  6. 关于获取目录的N种方法 的汇总

    前段时间在Global.asax.cs中的Session_End中使用Server.MapPath() 出现"服务器操作在此上下文中不可用"异常. 网络上给出的解决方案:Syste ...

  7. LINUX编程学习笔记(十三) 遍历目录的两种方法

    1 默认情况下  实际用户和有效用户是一样的 实际用户:执行用户   有效用户:权限用户 getuid()  实际用户 geteuid() 有效用户 chmod u+s 之后 ,其他人执行文件时,实际 ...

  8. linux查看目录的四种方法(ls只显示目录)【转】

    1.ls -d * amosli@amosli-pc:~$ ls -d * %APPDATA% develop many sorted.txt workspace bank Documents Mus ...

  9. python 获取当前文件夹路径及父级目录的几种方法

    获取当前文件夹路径及父级目录: import os current_dir = os.path.abspath(os.path.dirname(__file__)) print(current_dir ...

随机推荐

  1. MySQL Workbench update语句错误Error Code: 1175.

    rom:http://www.tuicool.com/articles/NJ3QRz MySQL update error: Error Code: 1175. You are using safe ...

  2. 更改Mantis的logo

    1 准备好自己的logo,例如准备的logo为zhaoxiyu.gif.zxy.gif 2 把上面的两个logo存放到C:/mantis-1.0.0a3/images 3 打开C:/mantis-1. ...

  3. struts2怎么实现页面到页面之间的传值?

    我要实现一个产品订购的功能,在浏览产品的时候通过点击一个订购的链接,跳转到提交订单的页面,在跳转的同时要把浏览的产品的名称和型号传到提交订单的页面,并且把这里的订单类的产品名称和型号的表单域里赋上传递 ...

  4. kafka深入研究(六)

    Kafka Producer端封装自定义消息 Kafka.network包源码解读 Kafka Consumer端的一些解惑 Kafka producer使用注意 kafka0.8的一些变动,先收藏, ...

  5. (转)不通过web.config在运行时注册httpmodules

    https://blog.csdn.net/kufeiyun/article/details/7763070 在asp.net4 中,我们知道可以不用任何配置让一个方法在appdomain中尽早执行, ...

  6. CRFPP/CRF++编译安装与部署

    CRFPP/CRF++编译安装与部署 下载CRF++ https://taku910.github.io/crfpp/#download 说明:在上面网站中下载CRF++ 0.58 解压 tar zx ...

  7. Best Time to Buy and Sell Stock II leetcode java

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  8. javascript+JQuery实现返回顶部功能

    很多网站上都有返回顶部的效果,本文阐述如何使用jquery实现返回顶部按钮. 首先需要在顶部添加如下html元素: <p id="back-to-top"><a ...

  9. BFC是什么

    BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等).虽然我知道如何利用 BFC 解决这些问题, ...

  10. win7取消任务栏预览并显示文件名

    开始--运行--regedit--回车,然后注册表就打开了,之后开始找到如下的位置,新增2个项 HKEY_CURRENT_USER\Software\Microsoft\Windows\Current ...