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

cart_ajax文件夹结构

PHP读取目录树

js文件夹下的内容

PHP读取目录树

显示结果

PHP读取目录树

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

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

显示结果

PHP读取目录树

Tags: PHP读取目录树

分享到: