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 无限级 SelectTree 类
May 19 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
Nov 07 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
php天翼开放平台短信发送接口实现方法
Dec 22 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 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编程中字符串处理的5个技巧小结
2007/11/13 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
PHP迭代器的内部执行过程详解
2013/11/12 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
Python hashlib模块加密过程解析
2019/11/05 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
2015年新农合工作总结
2015/03/30 职场文书
老人节主持词
2015/07/04 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
java项目构建Gradle的使用教程
2022/03/24 Java/Android
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS