0

すべてのディレクトリとファイルを一覧表示するために 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/ キーを見てください。これを配列に表示したくありません。現時点では配列キーとして表示されていますが、項目は何ですか? ヌルですか?

これに対する修正はありますか?codeigniter バージョン 2.1.3 を使用しています

4

1 に答える 1

1

現時点では配列キーとして表示されていますが、項目は何ですか? ヌルですか?

空の配列です。ブール値 (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);
于 2013-10-02T13:08:55.950 に答える