Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1204899
  • 博文数量: 252
  • 博客积分: 5421
  • 博客等级: 大校
  • 技术积分: 2418
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-17 12:59
文章分类

全部博文(252)

文章存档

2017年(3)

2016年(18)

2015年(31)

2014年(18)

2013年(7)

2012年(8)

2011年(12)

2010年(30)

2009年(32)

2008年(57)

2007年(36)

分类: PHP

2009-03-18 19:25:23

/**
 * 取得输入目录所包含的所有目录和文件
 * 以关联数组形式返回
 * @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) |
给主人留下些什么吧!~~