/**
* 取得输入目录所包含的所有目录和文件
* 以关联数组形式返回
* @param str $dir 目录名
* @param int $level 深度
* @return arr array('dir'=>array(...), 'file'=>array(...))
* @author qifei
*/
function deepScanDir($dir, $level=-1)
{
if ($level == 0) {
return array('dir'=>array(), 'file'=>array());
}
$fileArr = array();
$dirArr = array();
$dir = rtrim($dir, '\/');
if(is_dir($dir)){
$dirHandle = opendir($dir);
while(false !== ($fileName = readdir($dirHandle))){
$subFile = $dir . DIRECTORY_SEPARATOR . $fileName;
if(is_file($subFile)){
$fileArr[] = $subFile;
} elseif (is_dir($subFile) && str_replace('.', '', $fileName)!=''){
$dirArr[] = $subFile;
$arr = deepScanDir($subFile, $level==-1?-1:$level-1);
$dirArr = array_merge($dirArr, $arr['dir']);
$fileArr = array_merge($fileArr, $arr['file']);
}
}
closedir($dirHandle);
}
return array('dir'=>$dirArr, 'file'=>$fileArr);
}
//示例1
$dir = '/data/www/image';
$arr = deepScanDir($dir, 1);
print_r($arr);
/**
* 取得输入目录所包含的所有文件
* 以数组形式返回
* @param str $dir 目录名
* @param int $level 深度
* @return arr array(...)
* @author qifei
*/
function getDirFiles($dir, $level=-1)
{
if ($level == 0) {
return array();
}
if (is_file($dir)) {
return array($dir);
}
$files = array();
if (is_dir($dir) && ($dir_p = opendir($dir))) {
$ds = DIRECTORY_SEPARATOR;
while (($filename = readdir($dir_p)) !== false) {
if ($filename=='.' || $filename=='..') { continue; }
$filetype = filetype($dir.$ds.$filename);
if ($filetype == 'dir') {
$files = array_merge($files, getDirFiles($dir.$ds.$filename, $level==-1?-1:$level-1));
} elseif ($filetype == 'file') {
$files[] = $dir.$ds.$filename;
}
}
closedir($dir_p);
}
return $files;
}
//示例2
$dir = '/data/www/image';
$arr = getDirFiles($dir, 1);
print_r($arr);
?>
阅读(1270) | 评论(0) | 转发(0) |