php获取某目录包含的所有目录和文件的实现代码

发布时间:2020-06-17编辑:脚本学堂
本文分享一例php代码,用于获取某一目录所包含的所有目录与文件,代码简单,但其中的编程思想不错,值得参考学习,有兴趣的朋友可以看看。

本节内容:
php遍历目录与文件。

例子:
 

复制代码 代码示例:
<?php 
/**
 * 取得输入目录所包含的所有目录和文件
 * 以关联数组形式返回
 * edit: www.jb200.com
 */ 
function deepScanDir($dir) 

    $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); 
                $dirArr = array_merge($dirArr, $arr['dir']); 
                $fileArr = array_merge($fileArr, $arr['file']); 
            } 
        } 
        closedir($dirHandle); 
    } 
    return array('dir'=>$dirArr, 'file'=>$fileArr); 

//示例 
$dir = '/var/htdocs/w4/article'; 
$arr = deepScanDir($dir); 
print_r($arr); 
 
/**
 * 取得输入目录所包含的所有文件
 * 以数组形式返回
 * author: flynetcn
 */ 
function get_dir_files($dir) 

    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, get_dir_files($dir.$ds.$filename)); 
            } elseif ($filetype == 'file') { 
                $files[] = $dir.$ds.$filename; 
            } 
        } 
        closedir($dir_p); 
    } 
    return $files;