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

file_helper BUG举报

[复制链接]
发表于 2012-10-9 17:00:17 | 显示全部楼层 |阅读模式
在file_helper的约227行有个函数:get_dir_file_info
这个函数主要作用是遍历给定目录下的文件
第二个参数如果给FALSE值的话将会遍历给定目录以及子目录所有文件并汇总到一个二维数组
问题就在这,当汇总成二维数组时第一维是以文件名作为key的,如果此时子目录与父目录有相同文件名的情况,那么其中一个将被另一个覆盖掉

PHP复制代码
 
while (FALSE !== ($file = readdir($fp)))
                        {
                                if (@is_dir($source_dir.$file) AND strncmp($file, '.', 1) !== 0 AND $top_level_only === FALSE)
                                {
                                        get_dir_file_info($source_dir.$file.DIRECTORY_SEPARATOR, $top_level_only, TRUE);
                                }
                                elseif (strncmp($file, '.', 1) !== 0)
                                {
                                        $_filedata[$file] = get_file_info($source_dir.$file);
                                        $_filedata[$file]['relative_path'] = $relative_path;
                                }
                        }
 
复制代码


问题就在$_filedata[$file] = get_file_info($source_dir.$file);这行,key用的是$file,这个$file在父路径与子路径极有可能是重复的。


发表于 2012-10-10 16:24:48 | 显示全部楼层
看了一下,好像还真是这样。求大牛解释
 楼主| 发表于 2012-10-11 06:30:16 CI中国手机版 | 显示全部楼层
永恒forever 发表于 2012-10-10 16:24
看了一下,好像还真是这样。求大牛解释

我在帖子后面已经解释了怎么引起的这个“bug”,但是是不是一个真的bug,CI为什么这么写就得专业人士解释了。
 楼主| 发表于 2012-10-12 08:43:58 | 显示全部楼层
@Hex 求解释
 楼主| 发表于 2012-10-20 14:42:51 | 显示全部楼层
额,被忽视了。。。
发表于 2012-10-22 16:27:11 | 显示全部楼层
一维的关联数组必然会导致这样的结果。
除非改成多维的,那样结构就复杂了,我个人使用这个函数很少会用到有多级目录的地方。
你可以改进这个函数,呵呵
 楼主| 发表于 2012-10-23 10:48:53 | 显示全部楼层
Hex 发表于 2012-10-22 16:27
一维的关联数组必然会导致这样的结果。
除非改成多维的,那样结构就复杂了,我个人使用这个函数很少会用到 ...

恩 ,我改了

我有个项目,要找到整个目录下的xml,提取出来内部的数据
而这些目录的目录名什么的都是随机的
so ....
我就懒了

本版积分规则