2013-07-10 36 views
2

在CodeIgniter中使用directory_map Helper时,如果它们是直整型,则无法获取目录名称。例如“2013”​​将不起作用。但“2013_test”将起作用。CodeIgniter中的目录映射 - 不以整数作为目录名称

我有一个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)) ;

回答

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,“_”)结合起来,然后再将它传递回控制器。

希望这会有所帮助。