PHP 遍历文件实现代码


Posted in PHP onMay 04, 2011
function Files($path) 
{ 
foreach(scandir($path) as $line) 
{ 
if($line=='.'||$line=='..') continue; 
if(is_dir($path.'/'.$line)) Files($path.'/'.$line); 
else echo '<li>'.$path.'/'.$line.'</li>'; 
} 
}

PHP遍历文件及文件夹
加入给定文件夹 C:\\Windows\\AppPatch
1.首先获取这个文件夹下面的所有东西,也就是文件,文件夹,放一个数组里面
$fileArr = array(
'files' => array(), //文件放一个数组
'dirs' => array(), //文件夹放一个数组
)
2.如果存在子文件夹,遍历子文件夹,获取文件夹和文件,同样放进那个数组,如此循环,一个不漏
<?php 
$dir = 'F:\\game'; 
function read_dir_all($dir) { 
$ret = array('dirs'=>array(), 'files'=>array()); 
if ($handle = opendir($dir)) { 
while (false !== ($file = readdir($handle))) { 
if($file != '.' && $file !== '..') { 
$cur_path = $dir . DIRECTORY_SEPARATOR . $file; 
if(is_dir($cur_path)) { 
$ret['dirs'][$cur_path] = read_dir_all($cur_path); 
} else { 
$ret['files'][] = $cur_path; 
} 
} 
} 
closedir($handle); 
} 
return $ret; 
} 
$p = read_dir_all($dir); 
echo '<pre>'; 
var_dump($p); 
echo '</pre>'; 
?>

php遍历一个文件夹下的所有目录及文件
在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹。

这个题目有好多种解决方法。但大致思路都一样。采用递归。

$path = './filepath'; 
function getfiles($path) 
{ 
if(!is_dir($path)) return; 
$handle = opendir($path); 
while( false !== ($file = readdir($handle))) 
{ 
if($file != '.' && $file!='..') 
{ 
$path2= $path.'/'.$file; 
if(is_dir($path2)) 
{ 
echo ' '; 
echo $file; 
getfiles($path2); 
}else 
{ 
echo ' '; 
echo $file; 
} 
} 
} 
} 
print_r( getfiles($path)); 
echo '<HR>'; 
function getdir($path) 
{ 
if(!is_dir($path)) return; 
$handle = dir($path); 
while($file=$handle->read()) 
{ 
if($file!='.' && $file!='..') 
{ 
$path2 = $path.'/'.$file; 
if(is_dir($path2)) 
{ 
echo $file."\t"; 
getdir($path2); 
}else 
{ 
echo $file.' '; 
} 
} 
} 
} 
getdir($path); 
echo '<HR>'; 
function get_dir_scandir($path){ 
$tree = array(); 
foreach(scandir($path) as $single){ 
if($single!='.' && $single!='..') 
{ 
$path2 = $path.'/'.$single; 
if(is_dir($path2)) 
{ 
echo $single."\r\n"; 
get_dir_scandir($path2); 
}else 
{ 
echo $single."\r\n"; 
} 
} 
} 
} 
get_dir_scandir($path); 
echo ' 
<HR>'; 
function get_dir_glob(){ 
$tree = array(); 
foreach(glob('./curl/*') as $single){ 
echo $single."\r\n"; 
} 
} 
get_dir_glob(); 
echo ' 
<HR>'; 
function myscandir($path) 
{ 
if(!is_dir($path)) return; 
foreach(scandir($path) as $file) 
{ 
if($file!='.' && $file!='..') 
{ 
$path2= $path.'/'.$file; 
if(is_dir($path2)) 
{ 
echo $file; 
myscandir($path2); 
}else 
{ 
echo $file.' '; 
} 
} 
} 
} 
myscandir($path); 
echo '<HR>'; 
function myglob($path) 
{ 
$path_pattern = $path.'/*'; 
foreach(glob($path_pattern) as $file) 
{ 
if(is_dir($file)) 
{ 
echo $file; 
myscandir($file); 
}else 
{ 
echo $file.' '; 
} 
} 
} 
myglob($path);
PHP 相关文章推荐
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
destoon二次开发入门示例
Jun 20 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
Yii2选项卡的简单使用
May 26 PHP
php封装的mongodb操作类代码
Aug 06 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
php多进程应用场景实例详解
Jul 22 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 #PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 #PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 #PHP
php join函数应用
May 04 #PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 #PHP
drupal 代码实现URL重写
May 04 #PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 #PHP
You might like
php foreach、while性能比较
2009/10/15 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
10 个经典PHP函数
2013/10/17 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
jquery实现数字输入框
2017/02/22 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
python中使用enumerate函数遍历元素实例
2014/06/16 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
python实现mean-shift聚类算法
2020/06/10 Python
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
金讯Java笔试题目
2013/06/18 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
乐山大佛导游词
2015/02/02 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
JavaScript实现优先级队列
2021/12/06 Javascript