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 相关文章推荐
我的论坛源代码(七)
Oct 09 PHP
ADODB类使用
Nov 25 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
php mail to 配置详解
Jan 16 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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里的JS打印函数
2006/10/09 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
python创建文件备份的脚本
2018/09/11 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
Django框架模板的使用方法示例
2019/05/25 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
详解Python的三种拷贝方式
2020/02/11 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
python asyncio 协程库的使用
2021/01/21 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
放飞蜻蜓反思
2014/02/05 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏