我想把一个大文件夹下面的所有子文件夹和文件,按照文件夹或者文件名,按照树状结构遍历显示在一个大网页上。就是可以用加号展开,减号收缩那种树状结构。求高手给源代码,谢谢。PHP遍历源代码

解决方案 »

  1.   

    遍历这边应该不少人能回答,但做目录树,可能你要到html版那边问了
    或者google "css3tree"或者"css tree"能找到源码下面是我一个类里面的方法,你改着用吧
    参数说一下
    返回是一个二维数组(只包含文件/带路径,空目录会丢失,想也包含子目录,请参考RecursiveIteratorIterator增加参数,这里用的是默认值 LEAVES_ONLY)
    $path为目录根
    $size(true或false),是否返回字节数
    $toCsv(false或一个文件名字串),是否将返回也按csv格式写入到指定文件(不影响返回)
    如果不需要后面两个,可以去掉后面两个参数并删除相关语句,然后直接$arr[]=(string)$itemName就返回一维数组了备注:
    1.需要支持SPL的php版本(5.x以后好像都支持)
    2.windows下面unicode文件名的文件会漏掉,这个不是程序问题,是php本身的bug或kown issue    public function listDir($path, $size=false, $toCsv=false)
        {
            if (false !== $toCsv) $newCsv = new SplFileObject($toCsv, 'wb'); //参数三用的        $items = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
            $arr = array();
            while (list($itemName, $item) = each($items))
            {
                $fileInfo = array();
                $fileInfo['fullpath'] = (string)$itemName;
                if ($size) $fileInfo['size'] = (string)$item->getSize(); // 参数二用的
                if (false !== $toCsv) $newCsv->fputcsv($fileInfo); // 参数三用的
                $arr[] = $fileInfo;
            }
            return $arr;
        }
      

  2.   

    精华里有不少这方面的文档,但是是其中的部分,html的部分需要再通过自己加工
      

  3.   

    这个问题不算难题,就是一个遍历结合CSS+js实现的
    百度直接搜索“PHP目录树”就有不少例子了
    其实问之前自己搜索一下更好
      

  4.   

    用ztree插件实现+、-展开文件夹的效果。
    运用这个插件,你只需要做的是,获取每个路径下的文件,保存到一个数组里面。具体数组怎么构建,请参照ztree插件的使用方法。