首页 > 语言 > PHP > 正文

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

2024-05-05 00:07:45
字体:
来源:转载
供稿:网友

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

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

使用PHP列出目录树!

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

解题思路:

1. 列出目录中的文件。
2. 判断是否是目录,如果是目录就继续递归。
3. 将所有文件名,存入多维数组

<?phpfunction 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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选