加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP读取目录树的实现方法详解

发布时间:2022-08-25 13:35:22 所属栏目:PHP教程 来源:互联网
导读:本文实例讲述了PHP读取目录树的实现方法,分享给大家供大家参考,具体如下: 前一阵时间面试XX公司笔试题中竟然有这样一道题: 使用PHP列出目录树! 当时一看就懵逼了!基本的思路还是有的,不过是使用递归算法,但对PHP操作目录文件的方法却不是很了解,所
  本文实例讲述了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>"; 

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读