- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP遍历目录文件的常用方法小结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例总结了PHP遍历目录文件的常用方法。分享给大家供大家参考,具体如下:
算法1.简短系 。
1
2
3
4
|
foreach
(
glob
(
'*.*'
)
as
$filename
)
{
echo
'Filename:'
.
$filename
.;
}
|
算法2.规矩系 。
1
2
3
4
5
6
7
|
if
(
$handle
= opendir(
'C:\\Inetpub\\wwwroot\\test\\'
)){
echo
"Files:\n"
;
while
(false !== (
$file
= readdir(
$handle
))){
echo
"$file\n"
;
}
closedir
(
$handle
);
}
|
算法3.函数系 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function
tree(
$directory
)
{
$mydir
=dir(
$directory
);
while
(
$file
=
$mydir
->read()){
if
((
is_dir
(
"$directory/$file"
)) AND (
$file
!=
"."
) AND (
$file
!=
".."
))
{
echo
"$file\n"
;
tree(
"$directory/$file"
);
}
else
echo
"$file\n"
;
}
echo
"\n"
;
$mydir
->close();
}
tree(
"C:\\Inetpub\\wwwroot\\test\\"
);
|
算法4.函数系II 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
listDir(
$dir
){
if
(
is_dir
(
$dir
)){
if
(
$dh
= opendir(
$dir
)) {
while
((
$file
= readdir(
$dh
)) !== false){
if
((
is_dir
(
$dir
.
"/"
.
$file
)) &&
$file
!=
"."
&&
$file
!=
".."
){
echo
"文件名:"
,
$file
;
listDir(
$dir
.
"/"
.
$file
.
"/"
);
}
else
{
if
(
$file
!=
"."
&&
$file
!=
".."
){
echo
$file
;
}
}
}
closedir
(
$dh
);
}
}
}
listDir(
"C:\\Inetpub\\wwwroot\\test\\"
);
|
算法5.递归系 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
function
file_list(
$dir
,
$pattern
=
""
)
{
$arr
=
array
();
$dir_handle
=opendir(
$dir
);
if
(
$dir_handle
)
{
while
((
$file
=readdir(
$dir_handle
))!==false)
{
if
(
$file
===
'.'
||
$file
===
'..'
)
{
continue
;
}
$tmp
=
realpath
(
$dir
.
'/'
.
$file
);
if
(
is_dir
(
$tmp
))
{
$retArr
=file_list(
$tmp
,
$pattern
);
if
(!emptyempty(
$retArr
))
{
$arr
[]=
$retArr
;
}
}
else
{
if
(
$pattern
===
""
|| preg_match(
$pattern
,
$tmp
))
{
$arr
[]=
$tmp
;
}
}
}
closedir
(
$dir_handle
);
}
return
$arr
;
}
print_r(file_list(
"C:\\Inetpub\\wwwroot\\test\\"
));
|
测试方法 。
我们采取在测试代码的头部和尾部添加如下的内容来检测执行时间,并测试5次取平均结果作为最终成绩.
1
2
3
4
5
6
7
|
$stime
=microtime(true);
//测试代码
//......
//......
$etime
=microtime(true);
$total
=(
$etime
-
$stime
)*1000;
echo
"{$total} Millisecond(s)"
;
|
测试结果:
算法1 。
算法1在浏览器能正确输出所有项目,5次测验耗费的时间分别是:
平均用时=3803.618621824 毫秒 。
算法2 。
算法2在浏览器也能正确输出所有项目,但在开头会给出“..”(上级目录)的信息。5次测验耗费的时间分别是:
平均用时=381.0853481294 毫秒 。
算法3 。
算法3在浏览器能正确输出所有项目,也仍会给出“..”(上级目录)的信息。5次测验耗费的时间分别是:
平均用时=24299.2805485 毫秒 。
算法4 。
算法4和算法3类似,在浏览器能正确输出所有项目,5次测验耗费的时间分别是:
平均用时=24020.66812516 毫秒 。
算法5 。
算法5曾一度让我以为IIS又出问题了。虽说它在浏览器能正确输出所有项目,但数据的结果默认为数组。5次测验耗费的时间分别是:
平均用时=61411.31243706 毫秒 。
测试总结 。
根据测试结果,我们很容易得出下面的速度排名.
算法2 > 算法1 > 算法4 > 算法3 > 算法5 。
为什么算法2要比其他算法都高效一些呢?
实际上是因为算法中只使用了php中内置用来读取目录内容的函数“readdir()” 。除了算法1以外,其他算法在引用readdir()的时候,为了弥补函数的先天不足,干了很多其他的事情.
如果说,我们需要指定扩展名的列举目录内所有文件的话。Rt推荐使用算法1的模式,我们将代码写成这样就可以了.
1
2
3
4
|
foreach
(
glob
(
'*.需要的扩展名'
)
as
$filename
)
{
echo
'Filename:'
.
$filename
.;
}
|
结语 。
不管作为一个代码新手还是一个资深的程序员,在堆砌代码的时候,更应该关注程序的效率和安全.
请不要忽略任何一种可能,也请不要让孩子般的代码成为拖累服务器的罪魁祸首.
希望本文所述对大家PHP程序设计有所帮助.
最后此篇关于PHP遍历目录文件的常用方法小结的文章就讲到这里了,如果你想了解更多关于PHP遍历目录文件的常用方法小结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
目录 前言 style-loader css-loader sass-loader postcss-loader babel-l
目录 1、简单动态字符串(SDS) 2、链表 3、字典 哈希表 哈希表节点 字典 4、跳跃表
JS运行三部曲 js运行代码共分三步 语法分析 预编译 解释执行 JavaScript代码在运行时,首先会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内
目录 +拼接方式 sprintf函数 Join函数 buffer.Builderbuffer.WriteString函数 buffer.B
下面整理下python有哪些方式可以读取数据文件。 1. python内置方法(read、readline、readlines) read() : 一次性读取整个文件内容。推荐使用re
背景 项目中的流程监控,有几种节点,需要监控每一个节点是否超时。按传统的做法,肯定是通过定时任务,去扫描然后判断,但是定时任务有缺点:1,数据量大会慢;2,时间不好控制,太短,怕一
目录 1. 提炼函数 2. 合并重复的条件片段 3. 把条件分支语句提炼成函数 4. 合理使用循环 5. 提前让函数退出代替嵌套条件分支
开始之前,pandas中dataframe删除对象可能存在几种情况 1、删除具体列 2、删除具体行 3、删除包含某些数值的行或者列 4、删除包含某些字符、文字的行或者列 本文就针对这四种情况探讨
setData setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。在介绍常见的错误用法前,先简单介绍一下 setData 背后的工作原理。 工作原理 小程序的视图层
下面是五种实现斐波那契数列的方法 循环 ? 1
一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第
python之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具。本文主要介绍了一些简单易懂最常用的python图像处理库。 当今世界充满了各种
流式布局 采用流式布局会将元素按从左到右的顺序排列,如果一个元素在一行中放不下,那这个元素会另起一行依然按照从左到右的顺序排列 示例: 代码 public class Tes
@PropertySource 作用是:对自定义的properties文件加载 使用:@PropertySource(value={"classpath:people.properti
实现消息队列的两种方式 apache activemq官方实例发送消息 直接在apache官网http://activemq.apache.org/download-archives.html下
常用配置 以下配置能使用File -> New Projects Settings -> Settings for New Projects进行配置的尽量用这个配置,因为这个配置是作用
摘要: 开发者开发部署web应用时通常使用tomcat服务器,很多初学者只懂得在开发工具上配置,但离开了开发工具,自己手动配置部署,并让一个项目跑起来,你会了吗。小编也遇到过这样的困扰。网上查找的
1. 字符串的翻转 利用切片 ? 1
cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结。 1.cookie存在于浏览器 随意打开一个网址,用火狐的调试工具,随意选取
1、使用内置的tomcat,通过java -jar的方式启动 比如:java -jar bms.jar 但是这种启动方式 一旦关闭控制台 或者crtl+c 退出 此时应用就关闭了
我是一名优秀的程序员,十分优秀!