【问题标题】:Directory Map in CodeIgniter - Not working with Integers as directory namesCodeIgniter 中的目录映射 - 不使用整数作为目录名称
【发布时间】:2013-07-08 11:41:44
【问题描述】:

在 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));

【问题讨论】:

    标签: php codeigniter directory helper


    【解决方案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,"_") 结合起来,在将其传递回控制器之前将其取下。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多