2013-07-10 34 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,「_」)結合起來,然後再將它傳遞迴控制器。

希望這會有所幫助。