当前位置:Gxlcms > PHP教程 > php如何遍历目录,php非递归算法遍历目录的例子

php如何遍历目录,php非递归算法遍历目录的例子

时间:2021-07-01 10:21:17 帮助过:15人阅读

  1. function myscandir($pathname){
  2. foreach( glob($pathname) as $filename ){
  3. if(is_dir($filename)){
  4. myscandir($filename.'/*');
  5. }else{
  6. echo $filename.'
    ';
  7. }
  8. }
  9. }
  10. myscandir('D:/wamp/www/exe1/*');
  11. ?>

2. 方法2

  1. function myscandir($path){
  2. $mydir=dir($path);
  3. while($file=$mydir->read()){
  4. $p=$path.'/'.$file;
  5. if(($file!=".") AND ($file!="..")){
  6. echo $p.'
    ';
  7. }
  8. if((is_dir($p)) AND ($file!=".") AND ($file!="..")){
  9. myscandir($p);
  10. }
  11. }
  12. }
  13. myscandir(dirname(dirname(__FILE__)));
  14. ?>

二、php目录遍历函数opendir用法

opendir()函数的作用: 打开目录句柄,如果该函数成功运行,将返回一组目录流(一组目录字符串),如果失败将返回错误[error],你可以在函数的最前面加上“@”来隐藏错误.

syntax语法:opendir(directory,context) parameter

参数:description

描述:directory required. specifies the directory to stream    必要参数,指定目录对象,可选参数,指定需要处理的目录对象的context,这个context包括了一组选项,它可以对文本流的显示方式进行改变。

代码:

  1. $dir = "./";
  2. // open a known directory, and proceed to read its contents
  3. if (is_dir($dir))
  4. {
  5. if ($dh = opendir($dir)) {
  6. while (($file = readdir($dh)) !== false) {
  7. echo "filename: $file : filetype: " . filetype($dir . $file) . "n"."
    ";
  8. }
  9. closedir($dh);
  10. }
  11. }
  12. ?>

三、php非递归算法遍历目录下所有文件

php不用递归实现列出目录下所有文件的代码

代码:

  1. /**

  2. * PHP 非递归实现查询该目录下所有文件
  3. * @param unknown $dir
  4. * @return multitype:|multitype:string
  5. */
  6. function scanfiles($dir) {
  7. if (! is_dir ( $dir ))
  8. return array ();

  9. // 兼容各操作系统

  10. $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/';

  11. // 栈,默认值为传入的目录

  12. $dirs = array ( $dir );

  13. // 放置所有文件的容器

  14. $rt = array ();

  15. do {

  16. // 弹栈
  17. $dir = array_pop ( $dirs );

  18. // 扫描该目录

  19. $tmp = scandir ( $dir );

  20. foreach ( $tmp as $f ) {

  21. // 过滤. ..
  22. if ($f == '.' || $f == '..')
  23. continue;
  24. // 组合当前绝对路径
  25. $path = $dir . $f;
  26. // 如果是目录,压栈。
  27. if (is_dir ( $path )) {
  28. array_push ( $dirs, $path . '/' );
  29. } else if (is_file ( $path )) { // 如果是文件,放入容器中
  30. $rt [] = $path;
  31. }
  32. }

  33. } while ( $dirs ); // 直到栈中没有目录

  34. return $rt;

  35. }

人气教程排行