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面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php使用cookie保存登录用户名的方法
Jan 26 PHP
PHP SOCKET编程详解
May 22 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
php实现URL加密解密的方法
Nov 17 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python多线程下信号处理程序示例
2019/05/31 Python
python的pstuil模块使用方法总结
2019/07/26 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
python类共享变量操作
2020/09/03 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
几个常见的消息中间件(MOM)
2014/01/08 面试题
大一学生职业生涯规划
2014/03/11 职场文书
房屋出租协议书
2014/04/10 职场文书
保密工作责任书
2014/04/16 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
初中班级口号
2014/06/09 职场文书
大学生活动总结模板
2014/07/02 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2015年公司新年寄语
2014/12/08 职场文书
高三英语教学计划
2015/01/23 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang