Heim >Backend-Entwicklung >PHP-Tutorial >php如何遍历目录,php非递归算法遍历目录的例子

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-25 08:51:29966Durchsuche
  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. }
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn