1. 程式人生 > >php獲取目錄下所有檔案及目錄(多種方法)

php獲取目錄下所有檔案及目錄(多種方法)

獲取某目錄下所有子檔案和子目錄


function getDirContent($path){
    if(!is_dir($path)){
        return false;
    }
    //readdir方法
    /* $dir = opendir($path);
    $arr = array();
    while($content = readdir($dir)){
        if($content != '.' && $content != '..'){
            $arr[] = $content;
        }
    }
    closedir($dir
); */ //scandir方法 $arr = array(); $data = scandir($path); foreach ($data as $value){ if($value != '.' && $value != '..'){ $arr[] = $value; } } return $arr; }

下面介紹的三種方法,是獲取某個目錄下所有的目錄(包括子目錄,子孫目錄)和檔案,直到最裡層

方法一


function searchDir($path,&$files
)
{
if(is_dir($path)){ $opendir = opendir($path); while ($file = readdir($opendir)){ if($file != '.' && $file != '..'){ searchDir($path.'/'.$file, $files); } } closedir($opendir); } if(!is_dir($path)){ $files
[] = $path; } } //得到目錄名 function getDir($dir){ $files = array(); searchDir($dir, $files); return $files; } $filenames = getDir('lss'); foreach ($filenames as $value){ echo $value.'<br/>'; }

方法二:


function getDir($path){

    if(is_dir($path)){

        $dir =  scandir($path);
        foreach ($dir as $value){
            $sub_path =$path .'/'.$value;
            if($value == '.' || $value == '..'){
                continue;
            }else if(is_dir($sub_path)){
                echo '目錄名:'.$value .'<br/>';
                getDir($sub_path);
            }else{
                //.$path 可以省略,直接輸出檔名
                echo ' 最底層檔案: '.$path. ':'.$value.' <hr/>';
            }
        }
    }
}
$path = 'lss';
getDir($path);  

方法三:


function getDir($path){
    $arr = array();
        $arr[] = $path;
    if(is_file($path)){

    }else{
        if(is_dir($path)){
            $data = scandir($path);
            if(!empty($data)){
                foreach ($data as $value){
                    if($value != '.' && $value != '..'){
                        $sub_path = $path."/".$value;
                        $temp =  getDirContent($sub_path);
                        $arr = array_merge($temp,$arr);
                    }                    
                }

            }
        }
    }

    return $arr;
}
$path = 'lss';
var_dump(getDir($path));