PHP读取目录树的实现方法分析


Posted in PHP onMarch 22, 2019

本文实例讲述了PHP读取目录树的实现方法。分享给大家供大家参考,具体如下:

前一阵时间面试XX公司笔试题中竟然有这样一道题:

使用PHP列出目录树!

当时一看就懵逼了!基本的思路还是有的,不过是使用递归算法,但对PHP操作目录文件的方法却不是很了解,所以今天好好补习一下!

解题思路:

1. 列出目录中的文件。
2. 判断是否是目录,如果是目录就继续递归。
3. 将所有文件名,存入多维数组

<?php
function recurDir($pathName)
{
  //将结果保存在result变量中
  $result = array();
  $temp = array();
  //判断传入的变量是否是目录
  if(!is_dir($pathName) || !is_readable($pathName)) {
    return null;
  }
  //取出目录中的文件和子目录名,使用scandir函数
  $allFiles = scandir($pathName);
  //遍历他们
  foreach($allFiles as $fileName) {
    //判断是否是.和..因为这两个东西神马也不是。。。
    if(in_array($fileName, array('.', '..'))) {
      continue;
    }
    //路径加文件名
    $fullName = $pathName.'/'.$fileName;
    //如果是目录的话就继续遍历这个目录
    if(is_dir($fullName)) {
      //将这个目录中的文件信息存入到数组中
      $result[$fullName] = recurDir($fullName);
    }else {
      //如果是文件就先存入临时变量
      $temp[] = $fullName;
    }
  }
  //取出文件
  if($temp) {
    foreach($temp as $f) {
      $result[] = $f;
    }
  }
  return $result;
}
//验证一下这个函数是否好用!
$tree = recurDir('cart_ajax');
echo "<pre>";
print_r($tree);
echo "</pre>";
?>

cart_ajax文件夹结构

PHP读取目录树的实现方法分析

js文件夹下的内容

PHP读取目录树的实现方法分析

显示结果

PHP读取目录树的实现方法分析

大功告成了!目录的级别确实是这样的,不过看起来也太low了吧!稍微美化一下吧!

function beautifulTree($arr, $l = '-|')
{
  static $l = '';
  static $str = '';
  //遍历刚才得到的目录树
  foreach($arr as $key=>$val) {
    //如果是个数组,也就代表它是个目录,那么就在它的子文件中加入-|来表示是下一级吧
    if(is_array($arr[$key])) {
      $str.=$l.$key."<br/>";
      $l.='-|';
      beautifulTree($arr[$key], $l);
    }else {
      $str.=$l.$val."<br/>";
    }
  }
  $l = '';
  return $str;
}
$beautifulTree = beautifulTree($tree);
echo "<pre>";
print_r($beautiful);
echo "</pre>";

显示结果

PHP读取目录树的实现方法分析

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
在 PHP 中使用随机数的三个步骤
Oct 09 PHP
PHP 危险函数解释 分析
Apr 22 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 PHP
PHP分页类集锦
Nov 18 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
针对PHP开发安全问题的相关总结
Mar 22 #PHP
浅谈PHP中的Trait使用方法
Mar 22 #PHP
PHP观察者模式定义与用法实例分析
Mar 22 #PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 #PHP
PHP中$GLOBALS与global的区别详解
Mar 21 #PHP
PHP压缩图片功能的介绍
Mar 21 #PHP
PHP应用跨时区功能的实现方法
Mar 21 #PHP
You might like
php简单分页类实现方法
2015/02/26 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
万能的php分页类
2017/07/06 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
javascript 写类方式之四
2009/07/05 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
vue移动端路由切换实例分析
2018/05/14 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
Python3.7中安装openCV库的方法
2018/07/11 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
python中常见错误及解决方法
2020/06/21 Python
python解释器安装教程的方法步骤
2020/07/02 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
自荐信怎么写呢?
2013/12/09 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
鸟的天堂导游词
2015/01/31 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
Python中的变量与常量
2021/11/11 Python