php获取目录下所有文件及目录(多种方法)(推荐)

这篇文章主要介绍了php获取目录下所有文件及目录多种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

获取某目录下所有子文件和子目录

  1. function getDirContent($path){
  2. if(!is_dir($path)){
  3. return false;
  4. }
  5. //readdir方法
  6. /* $dir = opendir($path);
  7. $arr = array();
  8. while($content = readdir($dir)){
  9. if($content != '.' && $content != '..'){
  10. $arr[] = $content;
  11. }
  12. }
  13. closedir($dir); */
  14. //scandir方法
  15. $arr = array();
  16. $data = scandir($path);
  17. foreach ($data as $value){
  18. if($value != '.' && $value != '..'){
  19. $arr[] = $value;
  20. }
  21. }
  22. return $arr;
  23. }

下面介绍的三种方法,是获取某个目录下所有的目录(包括子目录,子孙目录)和文件,直到最里层

方法一

  1. function searchDir($path,&$files){
  2. if(is_dir($path)){
  3. $opendir = opendir($path);
  4. while ($file = readdir($opendir)){
  5. if($file != '.' && $file != '..'){
  6. searchDir($path.'/'.$file, $files);
  7. }
  8. }
  9. closedir($opendir);
  10. }
  11. if(!is_dir($path)){
  12. $files[] = $path;
  13. }
  14. }
  15. //得到目录名
  16. function getDir($dir){
  17. $files = array();
  18. searchDir($dir, $files);
  19. return $files;
  20. }
  21. $filenames = getDir('lss');
  22. foreach ($filenames as $value){
  23. echo $value.'<br/>';
  24. }

方法二:

  1. function getDir($path){
  2. if(is_dir($path)){
  3. $dir = scandir($path);
  4. foreach ($dir as $value){
  5. $sub_path =$path .'/'.$value;
  6. if($value == '.' || $value == '..'){
  7. continue;
  8. }else if(is_dir($sub_path)){
  9. echo '目录名:'.$value .'<br/>';
  10. getDir($sub_path);
  11. }else{
  12. //.$path 可以省略,直接输出文件名
  13. echo ' 最底层文件: '.$path. ':'.$value.' <hr/>';
  14. }
  15. }
  16. }
  17. }
  18. $path = 'lss';
  19. getDir($path);

方法三:

  1. function getDir($path){
  2. $arr = array();
  3. $arr[] = $path;
  4. if(is_file($path)){
  5. }else{
  6. if(is_dir($path)){
  7. $data = scandir($path);
  8. if(!emptyempty($data)){
  9. foreach ($data as $value){
  10. if($value != '.' && $value != '..'){
  11. $sub_path = $path."/".$value;
  12. $temp = getDirContent($sub_path);
  13. $arr = array_merge($temp,$arr);
  14. }
  15. }
  16. }
  17. }
  18. }
  19. return $arr;
  20. }
  21. $path = 'lss';
  22. var_dump(getDir($path));