codeigniter目录映射助手 - 文件夹权限

时间:2013-10-02 12:20:53

标签: php arrays codeigniter helper

我正在使用dircetory_helper()列出所有目录和文件。但是,当我将文件夹的权限更改为0700(因此无法查看或访问)时,它仍然出现在数组中。像这样;

Array
(
    [2001-07-01/] => Array
    (
        [0] => 1_july_2001.pdf
    )

    [0] => introduction.html

    [2009-05-01/] => 

    [2012-07-01/] => Array
    (
        [0] => 1_july_2012.pdf
        [1] => 1_july_2012.xls
    )

    [2013-01-01/] => Array
    (
        [0] => 1_january_2013.pdf
        [1] => key_points.html
        [2] => 1_january_2013.xls
    )
)

看看2009-05-01 / key。我不希望它出现在数组中。目前它作为数组键出现,但项目是什么?它是NULL吗?

有解决方法吗?我正在使用codeigniter版本2.1.3

1 个答案:

答案 0 :(得分:1)

  

目前它作为数组键出现,但项目是什么?它是NULL吗?

这是一个空数组。是boolean(false)。只要它没有显示内容,问题是什么?当您显示数组时,数组中没有任何内容,因此应显示它(也不是它的键)。

if( count($array_item) == 0 )
{
    // dont show $array_item
}
else
{
    // $array_item with stuff in it; display
}

我认为没有办法防止密钥进入那里而不改变父目录的权限,这显然会阻止其他目录被读取。通过将文件夹更改为0700,它可以通过不呈现目录的内容来按预期运行。

但是,您可以在发送之前修改directory_map()的结果:

$this->load->helper('directory');

$map = directory_map('testdir');

$my_map = array();

foreach($map as $k => $v )
{
    // check that it's not an empty array and that it's not a file
    // in the root directory
    if($v and gettype($v) == 'array')
    {
        $my_map[$k] = $v;

    }
}

print_r($my_map);