22'C 구름 많음
서울 강남구
순서 없는 재귀적 파일(또는 폴더) 목록을 배열로 저장하는 사용자 함수입니다.
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
)
)
}
*/
?>