php遍历所有文件及文件夹的方法深入解析


Posted in PHP onJune 08, 2013

 1.方法一:

<? 
$dir="D:"; 
static $dir_list =0; 
static $file_list =0; 
function listfile($dir){
global $dir_list,$file_list;
$d = dir($dir); 
while ( $entry = $d->read()) { 
$tem_curnt=$dir."/".$entry; 
if($entry=="." || $entry=="..") continue; 
if ( is_dir( $tem_curnt)) { 
listfile($tem_curnt);
echo "文件夹 ".$tem_curnt."<br>"; 
$dir_list++; 
} 
elseif ( is_file($tem_curnt)) { 
echo "文件".$tem_curnt."<BR>"; 
$file_list++; 
} 
} 
$d->close(); 
}
listfile($dir);
echo "目录数:".$dir_list;
echo"<br>";
echo"文件数:".$file_list;
?>

2.方法二:
<?php
function list_dir($dirpath){
 if($dirpath[strlen($dirpath)]-1!='/'){
  $dirpath.="/";
 }
 static $result_array=array();
 if(is_dir($dirpath)){
  $files_dirs=scandir($dirpath);
  foreach($files_dirs as $file){
   if($file=='.'||$file=='..'){continue;}
   if(is_dir($dirpath.$file)){
    list_dir($dirpath.$file);
   }else{
    array_push($result_array,$dirpath.$file);
   }
  }
 }
 return $result_array;
}
$array=list_dir('D:/www');
foreach($array as $value){
 echo $value;
 echo "<br>";
}
?>

3.方法三:
<?php
 function list_dir($dirpath){
  if($dirpath[strlen($dirpath)-1]!="//"){$dirpath.="//";}
  static $result_array=array();
  if(is_dir($dirpath)){
   $handle=opendir($dirpath);
   while($file=readdir($handle)){
    if($file=="."||$file==".."){continue;}
    if(is_dir($dirpath.$file)){
     list_dir($dirpath.$file."//");
    }else{
     array_push($result_array,$dirpath.$file);
    }
   }
   closedir($handle);
  }
  return $result_array;
 }
 $array=list_dir("D:/www");
 foreach($array as $value){
  echo $value;
  echo "<br>";
 }
?>

4.方法四:
<?php
 function list_dir($dirpath){
  if($dirpath[strlen($dirpath)-1]!="//"){$dirpath.="//";}
  static $result_array=array();
  if(is_dir($dirpath)){
   $dir=dir($dirpath);
   while($file=$dir->read()){
    if($file=="."||$file==".."){continue;}
    if(is_dir($dirpath.$file)){
     list_dir($dirpath.$file."//");
    }else{
     array_push($result_array,$dirpath.$file);
    }
   }
   $dir->close();
  }
  return $result_array;
 }
 $array=list_dir("D:/www");
 foreach($array as $value){
  echo $value;
  echo "<br>";
 }
?>

PHP 相关文章推荐
php基础知识:类与对象(5) static
Dec 13 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
深入PHP magic quotes的详解
Jun 17 PHP
PHP魔术引号所带来的安全问题分析
Jul 15 PHP
php实现事件监听与触发的方法
Nov 21 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
Oct 18 PHP
tp5框架的增删改查操作示例
Oct 31 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 #PHP
基于PHP遍历数组的方法汇总分析
Jun 08 #PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 #PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 #PHP
处理单名多值表单的详解
Jun 08 #PHP
探讨fckeditor在Php中的配置详解
Jun 08 #PHP
php创建基本身份认证站点的方法详解
Jun 08 #PHP
You might like
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
css sprite简单实例
2016/05/23 HTML / CSS
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
VC++笔试题
2014/10/13 面试题
机械系大学毕业生推荐信
2013/11/27 职场文书
工作散漫检讨书
2014/09/16 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
转让协议书
2015/01/27 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
运动员加油词
2015/07/18 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
分析Java中Map的遍历性能问题
2021/06/26 Java/Android
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python