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创建PDF中文文档
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php构造函数与析构函数
Apr 23 PHP
微信支付开发订单查询实例
Jul 12 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
PHP INT类型在内存中占字节详解
Jul 20 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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获取bing每日壁纸示例分享
2014/02/25 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
jQuery 开天辟地入门篇一
2009/12/09 Javascript
js脚本实现数据去重
2014/11/27 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
vue组件添加事件@click.native操作
2020/10/30 Javascript
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Django自定义分页效果
2017/06/27 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
Python持续监听文件变化代码实例
2020/07/22 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
德国旅游网站:weg.de
2018/06/03 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
电大自我鉴定
2013/10/27 职场文书
工厂厂长岗位职责
2013/11/08 职场文书
酒店led欢迎词
2014/01/09 职场文书
校园广播稿500字
2014/02/04 职场文书
班委竞选演讲稿
2014/04/28 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python