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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
Php header()函数语法及使用代码
Nov 04 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
PHP面向对象法则
2012/02/23 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
javascript 中的继承实例详解
2017/05/05 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python新手学习使用库
2020/06/11 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
护士实习自我鉴定
2013/10/22 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
同学聚会策划方案
2014/06/06 职场文书
公司活动总结怎么写
2014/06/25 职场文书
三八活动策划方案
2014/08/17 职场文书
80后婚前协议书范本
2014/10/24 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
装修公司管理制度
2015/08/05 职场文书
导游词之千岛湖
2019/09/23 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书