gpt4 book ai didi

PHP遍历目录文件的常用方法小结

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com