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));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章