Home >Backend Development >PHP Tutorial >php 递归和非递归遍历目录下的所有文件

php 递归和非递归遍历目录下的所有文件

WBOY
WBOYOriginal
2016-06-20 12:46:121203browse

//php 递归实现遍历 用dir 返回对象<?   function loop($dir){	 $mydir =dir($dir);    //以对象的形式访问    while($file = $mydir ->read()){                        //目录中有隐藏文件'.'和'..' 遍历的时候需要注意            if((is_dir("$dir/$file")) && ($file!=".") && ($file!="..")){	                echo $file.'</br>';                        loop("$dir/$file"); //递归循环            }else{                   if($file!=".." && $file!="."){                    echo $file."</br>";                    }			            }			    }		  }   loop(dirname(__FILE__));   //dirname 去掉文件名返回目录名//非递归处理遍历目录//思路: 首先创建一个数组,因为第一次传的是一个去掉文件名的目录名(如 c://wamp/www/php)// 进行foreach 循环 所以第一次把C://wamp/www/php 下的全部文件都放入到了 数组中//只够进行 while大循环 每次输出数组的最后一个,当文件为目录的时候在此进行foreach循环//知道最后一个值时count($list)值为0 退出循环function scanAll($dir){  $list = array();  $list[] = $dir;   while (count($list) > 0)  {	//  var_dump($list);    //弹出数组最后一个元素    $file = array_pop($list);     //处理当前文件    echo $file."</br>";      //如果是目录    if (is_dir($file)){      $children = scandir($file);	  var_dump($children);      foreach ($children as $child){        if ($child !== '.' && $child !== '..'){          $list[] = $file.'/'.$child;		            }       }     }	  	    }}scanAll(dirname(__FILE__));


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn