码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-10-22 19:43:33      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

//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__));


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

标签:

原文地址:http://my.oschina.net/kakoi/blog/520754

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!