在CodeIgniter中使用directory_map Helper时,如果它们是直整数,我将无法获取目录名称。例如“2013”将无效。但“2013_test”将有效。
我有一个print_r的例子如下。与directory_map
的代码行一样这是否有解决方法?
阵 ( [0] =>排列 ( )
[1] => Array
(
)
[2] => Array
(
)
[3] => Array
(
)
[4] => Array
(
)
[5] => Array
(
)
[6] => Array
(
)
[7] => Array
(
[0] => 2010.pdf
)
[8] => Array
(
[0] => 2011.pdf
[1] => 2011.xls
)
[9] => Array
(
[0] => 2012.pdf
[1] => 2012.xls
)
)
$ publication_data = dir_map_sort(directory_map($ pre_string。$ uri_string。“/”,2));
答案 0 :(得分:1)
我设法解决了这个问题。您必须修改array_helper文件中的directory_map函数。我已经清楚地评论了我添加的代码的开头和结尾。
if ( ! function_exists('directory_map'))
{
function directory_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;
}
if (($directory_depth < 1 OR $new_depth > 0) && @is_dir($source_dir.$file))
{
//code added - mike lovely (it's just this if/else below)
if(($file >= "1970") && ($file <= "2300")) {
$file_1 = "_".$file;
}else{
$file_1 = $file;
}
//end - mike lovely
$filedata[$file_1] = directory_map($source_dir.$file.DIRECTORY_SEPARATOR, $new_depth, $hidden);
}
else
{
$filedata[] = $file;
}
}
closedir($fp);
return $filedata;
}
return FALSE;
}
}
这会在数组名称的开头加上下划线字符。
我将它与我的模型中的ltrim($ array_name,“_”)结合起来,然后在将其传回控制器之前将其取回。
希望这有帮助。