当前位置:首页 > PHP教程 > php文件操作 > 列表

PHP读取目录树的实现方法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-13 23:12:59 浏览: 评论:0 

本文实例讲述了PHP读取目录树的实现方法,分享给大家供大家参考,具体如下:

前一阵时间面试XX公司笔试题中竟然有这样一道题:

使用PHP列出目录树!

当时一看就懵逼了!基本的思路还是有的,不过是使用递归算法,但对PHP操作目录文件的方法却不是很了解,所以今天好好补习一下!

解题思路:

1. 列出目录中的文件。

2. 判断是否是目录,如果是目录就继续递归。

3. 将所有文件名,存入多维数组

  1. <?php 
  2. function recurDir($pathName
  3.   //将结果保存在result变量中 
  4.   $result = array(); 
  5.   $temp = array(); 
  6.   //判断传入的变量是否是目录 
  7.   if(!is_dir($pathName) || !is_readable($pathName)) { 
  8.     return null; 
  9.   } 
  10.   //取出目录中的文件和子目录名,使用scandir函数 
  11.   $allFiles = scandir($pathName); 
  12.   //遍历他们 
  13.   foreach($allFiles as $fileName) { 
  14.     //判断是否是.和..因为这两个东西神马也不是。。。 
  15.     if(in_array($fileNamearray('.''..'))) { 
  16.       continue
  17.     } 
  18.     //路径加文件名 
  19.     $fullName = $pathName.'/'.$fileName
  20.     //如果是目录的话就继续遍历这个目录 
  21.     if(is_dir($fullName)) { 
  22.       //将这个目录中的文件信息存入到数组中 
  23.       $result[$fullName] = recurDir($fullName); 
  24.     }else { 
  25.       //如果是文件就先存入临时变量 
  26.       $temp[] = $fullName
  27.     } 
  28.   } 
  29.   //取出文件 
  30.   if($temp) { 
  31.     foreach($temp as $f) { 
  32.       $result[] = $f
  33.     } 
  34.   } 
  35.   return $result
  36. //验证一下这个函数是否好用! 
  37. $tree = recurDir('cart_ajax'); 
  38. echo "<pre>"
  39. print_r($tree); 
  40. echo "</pre>"
  41. ?> 

cart_ajax文件夹结构

PHP读取目录树

js文件夹下的内容

PHP读取目录树

显示结果

PHP读取目录树

大功告成了!目录的级别确实是这样的,不过看起来也太low了吧!稍微美化一下吧!

  1. function beautifulTree($arr$l = '-|'
  2.   static $l = ''
  3.   static $str = ''
  4.   //遍历刚才得到的目录树 
  5.   foreach($arr as $key=>$val) { 
  6.     //如果是个数组,也就代表它是个目录,那么就在它的子文件中加入-|来表示是下一级吧 
  7.     if(is_array($arr[$key])) { 
  8.       $str.=$l.$key."<br/>"
  9.       $l.='-|'
  10.       beautifulTree($arr[$key], $l); 
  11.     }else { 
  12.       $str.=$l.$val."<br/>"
  13.     } 
  14.   } 
  15.   $l = ''
  16.   return $str
  17. $beautifulTree = beautifulTree($tree); 
  18. echo "<pre>"
  19. print_r($beautiful); 
  20. echo "</pre>"

显示结果

PHP读取目录树

Tags: PHP读取目录树

分享到: