用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1870|回复: 7
收起左侧

[已解决] 目录辅助函数directory_map()的问题

[复制链接]
发表于 2014-12-25 18:23:22 | 显示全部楼层 |阅读模式
目录辅助函数directory_map(),当第二个参数设置为1时,返回的数组并不区分文件夹和文件,这一点文档中并没有说明。而设为0时文件夹嵌套又比较多时返回的数组又过大。希望得到解决,在查询目录深度为1时可以区分文件和文件夹。
发表于 2014-12-26 18:55:27 | 显示全部楼层
为何就是不愿动手指、动脑筋?

要修改的地方相当少!

PHP复制代码
 
function dir_map($source_dir, $directory_depth = 0, $hidden = FALSE)
{
    if ($fp = @opendir($source_dir))
    {
        $filedata    = array();
        $new_depth    = $directory_depth - 1;
        $source_dir    = rtrim($source_dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
 
        while (FALSE !== ($file = readdir($fp)))
        {
            // Remove '.', '..', and hidden files [optional]
            if ( ! trim($file, '.') OR ($hidden == FALSE && $file[0] == '.'))
            {
                continue;
            }
 
            $filedata[$file] = @is_dir($source_dir.$file) ? (($directory_depth < 1 OR $new_depth > 0) ? dir_map($source_dir.$file.DIRECTORY_SEPARATOR, $new_depth, $hidden) : array()) : NULL;
        }
 
        closedir($fp);
        return $filedata;
    }
 
    return FALSE;
}
 
复制代码


评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2014-12-25 18:38:35 | 显示全部楼层
我看了一下文档,这个参数的意思是目录深度。
另外,这个函数本身就是不区分目录和文件的。

http://codeigniter.org.cn/user_g ... rectory_helper.html
 楼主| 发表于 2014-12-25 18:46:45 | 显示全部楼层
Hex 发表于 2014-12-25 18:38
我看了一下文档,这个参数的意思是目录深度。
另外,这个函数本身就是不区分目录和文件的。

如果第二个参数不设置,他会列出包括所有的子文件夹和子文件。文件是以数字为索引的,并且值为文件名,文件夹是以文件夹名为索引的,并且值为数组。因为文件夹名也有可能为数字,所以可以通过判断值的类型来确定是否是文件夹或文件。
当参数为1时,返回的数组则是以从0开始索引的一维数组,并不像不设置这个参数那样返回的数组形式,而这种形式是无法判断是文件夹或文件的。
所以我希望当设置深度时反回的数据形式也能像不设置这个参数那样。

 楼主| 发表于 2014-12-25 18:50:20 | 显示全部楼层
本帖最后由 秒秋 于 2014-12-25 18:53 编辑
Hex 发表于 2014-12-25 18:38
我看了一下文档,这个参数的意思是目录深度。
另外,这个函数本身就是不区分目录和文件的。

我已经通过这个函数做出了本地管理文件的web管理系统。可以通过不设置深度来列出所选文件夹的文件了,并区分了文件夹和文件。因为文件夹很深返回的数组过大影响了网站速度,所以希望解决这个问题。

文件管理系统

文件管理系统
发表于 2014-12-25 18:57:38 | 显示全部楼层
你的需求明白了,但是这个函数本身就是这样设计的。
你可以自己修改下这个函数。
 楼主| 发表于 2014-12-25 19:00:38 | 显示全部楼层
Hex 发表于 2014-12-25 18:57
你的需求明白了,但是这个函数本身就是这样设计的。
你可以自己修改下这个函数。 ...

还是谢谢Hex大神。我把参数改成2了,虽然也返回了没必要的数据,但比不设置好多啦。
 楼主| 发表于 2015-1-24 15:51:41 | 显示全部楼层
燃雲 发表于 2014-12-26 18:55
为何就是不愿动手指、动脑筋?

要修改的地方相当少!

ci的管理员还是很热情的,谢谢啦,支持ci

本版积分规则