file_helper BUG举报
在file_helper的约227行有个函数:get_dir_file_info这个函数主要作用是遍历给定目录下的文件
第二个参数如果给FALSE值的话将会遍历给定目录以及子目录所有文件并汇总到一个二维数组
问题就在这,当汇总成二维数组时第一维是以文件名作为key的,如果此时子目录与父目录有相同文件名的情况,那么其中一个将被另一个覆盖掉
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在父路径与子路径极有可能是重复的。
看了一下,好像还真是这样。求大牛解释 永恒forever 发表于 2012-10-10 16:24
看了一下,好像还真是这样。求大牛解释
我在帖子后面已经解释了怎么引起的这个“bug”,但是是不是一个真的bug,CI为什么这么写就得专业人士解释了。 @Hex 求解释 额,被忽视了。。。 一维的关联数组必然会导致这样的结果。
除非改成多维的,那样结构就复杂了,我个人使用这个函数很少会用到有多级目录的地方。
你可以改进这个函数,呵呵 Hex 发表于 2012-10-22 16:27 static/image/common/back.gif
一维的关联数组必然会导致这样的结果。
除非改成多维的,那样结构就复杂了,我个人使用这个函数很少会用到 ...
恩 ,我改了
我有个项目,要找到整个目录下的xml,提取出来内部的数据
而这些目录的目录名什么的都是随机的
so ....
我就懒了
页:
[1]