순서 없는 재귀적 파일(또는 폴더) 목록을 배열로 저장하는 사용자 함수입니다.

Categories_Tree_File( $directory, $f );

  • $directory 인자: 배열로 저장할 폴더 이름
  • $f 인자: 임의의 값을 지정하면 파일을 배열로 저장합니다.

; 반환 값: 재귀적 파일(또는 폴더) 배열 목록
; key 값 끝에 / 가 붙으면 폴더를 의미하고,
      숫자 key 이면 value 값에 파일 이름을 저장합니다.
; count 변수에 파일 개수가 저장됩니다.

<?php
 function Categories_Tree_File($directory, $f = null)
 {
    $raw = array();
    $directory = preg_replace(array("@[\.]+@", "@[/]+@", ), array(".", "/"), $directory);
    if(substr($directory, -1) === '/')
    {
        $directory = substr($directory, 0, -1);
    }
    if(is_dir($directory))
    {
        $count = 1;
        clearstatcache();
        foreach(@scandir($directory) as $node)
        {
            if( ($node !== ".") && ($node !== "..") )
            {
                if(is_file($directory . '/' . $node))
                {
                    clearstatcache();
                    if($f)
                    {
                        $raw[] = rawurlencode($node);
                    }
                    $raw['count'] = $count++;

                    continue;
                }
                $raw[rawurlencode($node) . '/'] = Categories_Tree_File($directory . '/' . $node, $f);
            }
        }
    }
    return $raw;
 }
 /*
    ex.)
    $atr = Categories_Tree_File( './example', true );
    print_r($atr);
    결과 :
    Array
    (
        [0] => README.txt
        [1] => add.htm
        [2] => add_dir.htm
        [3] => bbs_mysql
        [4] => bbsdir_mysql
        [count] => 5
        [file/] => Array
            (
                [5/] => Array
                    (
                        [0] => addfind.gif
                        [count] => 1
                    )
                [8/] => Array
                    (
                        [0] => write.gif
                        [count] => 1
                    )
            )   
    }
 */
 ?>

0 댓글