PHP读取目录树
来源:互联网 发布:网络安全法 实名备案 编辑:程序博客网 时间:2024/05/23 21:52
前一阵时间面试XX公司笔试题中竟然有这样一道题:
使用PHP列出目录树!
当时一看就懵逼了!基本的思路还是有的,不过是使用递归算法,但对PHP操作目录文件的方法却不是很了解,所以今天好好补习一下!
解题思路:
- 列出目录中的文件。
- 判断是否是目录,如果是目录就继续递归。
- 将所有文件名,存入多维数组
<?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文件夹结构
js文件夹下的内容
显示结果
大功告成了!目录的级别确实是这样的,不过看起来也太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>";
显示结果
0 0
- PHP读取目录树
- php读取文件目录
- php读取目录中的文件
- php递归读取目录与创建目录
- php 读取目录下所有文件修改
- php采用ajax读取某个目录文件
- php读取目录下的所有文件
- php读取目录生成文件列表
- php 实现读取目录下所有文件
- PHP远程任意文件读取及目录遍历漏洞
- PHP中读取某个目录下的文件
- php 读取目录中所有文件名(含子目录)
- php 读取目录所有文件信息dir()
- php读取目录所有文件信息实现代码
- php实现目录下的文件读取功能
- php读取目录及子目录下所有文件名的方法
- php 怎样读取指定目录下面的所有文件?
- php 读取某目录下的所有文件
- linux下的文件系统选型
- Android开发之将Edittext输入弹出的软键盘设置搜索确定键。详细代码,已验证可用。
- red5源码分析---5
- ./configure,make,make install的作用
- Android Adobe工具类
- PHP读取目录树
- 简单分析 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- HTML常用标签
- android studio 打jar包并混淆
- JavaWeb学习总结(一)——servlet 之入门
- C# AttributeUsage的使用浅析
- 单点登录的实现思路
- Android Dev Intro - GLSurfaceView.RequestRender
- android中Activity类的onNewIntent(Intent intent)方法何时调用