<?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. Memcached 集群架构方面的问题

    *  集群架构方面的问题 o memcached是怎么工作的? o memcached最大的优势是什么? o memcached和MySQL的query cache相比,有什么优缺点? o memca ...

  2. 使用开源库 MBProgressHUD 等待指示器

    source https://github.com/jdg/MBProgressHUD MBProgressHUD is an iOS drop-in class that displays a tr ...

  3. Javascript时间以及格式化秒

    var now = new Date(); timer = $.timer(timeout, function () {     var sec_num = Math.ceil((now.getTim ...

  4. MIR Flickr 1M 图像数据集(点击即可下载)

    Index of /mirflickr/mirflickr1m Name Last modified Size Description Parent Directory   -   exif.zip ...

  5. mac下virtualbox安装win7系统

    下载安装参考: http://win.bai-bang.top/shendu64win7.html 1.之前在win7下的virtualbox安装win7操作溜溜的,换做mac,不知道是不是太久没有安 ...

  6. 初识Tomcat

    Tomcat的安装非常简单,解压即可! Tomcat要正常运行,需要配置一个环境变量JAVA_HOME,指向jdk的主目录.

  7. Objective-C:对象之间循环引用会造成死循环

    对象之间的循环引用        两个对象A.B,有可能会出现一种特殊的情况:A中包含B的实例变量:B中又包含A的实例变量,如果两个实例变量都是强引用(A有B实例变量的所有权,B也有A的实例变量的所有 ...

  8. PHP array与Json学习

    在 PHP 中,有三种数组类型: 索引数组 - 带有数字索引的数组,(可以理解C/C++/Java中的数组,按照索引位置直接访问) 关联数组 - 带有指定键的数组,(可以理解为map,按照键值对存储, ...

  9. 两个List循环

    package execise; import java.util.ArrayList; import java.util.List; import domain.User; public class ...

  10. POJ 2763 Housewife Wind LCA转RMQ+时间戳+线段树成段更新

    题目来源:POJ 2763 Housewife Wind 题意:给你一棵树 2种操作0 x 求当前点到x的最短路 然后当前的位置为x; 1 i x 将第i条边的权值置为x 思路:树上两点u, v距离为 ...