php遍历文件夹下的所有文件和子文件夹示例

这篇文章主要介绍了php遍历文件夹下的所有文件和子文件夹示例,这里提供二个方法,需要的朋友可以参考下。

遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环,代码如下:

  1. <?php
  2. /**
  3. * @param string $dir
  4. * @return array
  5. */
  6. function my_scandir($dir)
  7. {
  8. $files = array();
  9. if ( $handle = opendir($dir) ) {
  10. while ( ($file = readdir($handle)) !== false )
  11. {
  12. if ( $file != ".." && $file != "." )
  13. {
  14. if ( is_dir($dir . "/" . $file) )
  15. {
  16. $files[$file] = my_scandir($dir . "/" . $file);
  17. }
  18. else
  19. {
  20. $files[] = $file;
  21. }
  22. }
  23. }
  24. closedir($handle);
  25. return $files;
  26. }
  27. }
  28. function my_scandir1($dir)
  29. {
  30. $files = array();
  31. $dir_list = scandir($dir);
  32. foreach($dir_list as $file)
  33. {
  34. if ( $file != ".." && $file != "." )
  35. {
  36. if ( is_dir($dir . "/" . $file) )
  37. {
  38. $files[$file] = my_scandir1($dir . "/" . $file);
  39. }
  40. else
  41. {
  42. $files[] = $file;
  43. }
  44. }
  45. }
  46. return $files;
  47. }
  48. $result = my_scandir('./');
  49. $result = my_scandir1('./');
  50. ?>

另一个实现方法,代码如下:

  1. function fetchDir($dir) {
  2. foreach(glob($dir.'\*') as $file) {
  3. echo $file,"\n";
  4. if(is_dir($file)) {
  5. fetchDir($file);
  6. }
  7. }
  8. }
  9. fetchDir("D:\wamp\www\any");

还可以把‘\*', 换成 DIRECTORY_SEPARATOR.'*' ,把‘\n'换成PHP_EOL ,这样可以跨平台了。