您现在的位置是:网站首页 > 脚本编程>

递归实现无限级遍历文件夹

2014-07-171049人围观
简介 写一个函数能够遍历一个文件夹下的所有文件和子文件夹已经不是一个什么新鲜的题目了,昨天面试就遇到了这题,就没有多加思考稀里糊涂的就写完了。在面试完后总感觉写的有问题。想想的确有问题,那问题出现在哪里?小编解析一下代码function my_scandir($dir){  $files = array(); ...

写一个函数能够遍历一个文件夹下的所有文件和子文件夹已经不是一个什么新鲜的题目了,昨天面试就遇到了这题,就没有多加思考稀里糊涂的就写完了。在面试完后总感觉写的有问题。想想的确有问题,那问题出现在哪里?小编解析一下代码

function my_scandir($dir){
     $files = array();
    if ( $handle = opendir($dir) ) {
         while ( ($file = readdir($handle)) !== false ) {
             if ( $file != ".." && $file != "." ) {
                 if ( is_dir($dir . "/" . $file) ) {
                    $files[$file] = scandir($dir . "/" . $file);
                }else {
                    $files[] = $file;
                }  
           }   
      }  
       closedir($handle);
        return $files;  
   }
}

这是小编面试写的代码  这段代码最多能遍历2级文件,那么不知道有多少级怎么办?

优化后的代码

<?php
function my_scandir($dir)
{     
    $files = array();
    if ( $handle = opendir($dir) ) {
         while ( ($file = readdir($handle)) !== false )
        {    
             if ( $file != ".." && $file != "." )
            {
                 if ( is_dir($dir . "/" . $file) )
                 {
                     $filess=my_scandir($dir . "/" . $file);
                     $files[] = $filess;                    
                 }else
                 {
                    $files[] = $dir."/".$file;
                 }  
            }   
        }  
       closedir($handle);
       $str=my_array($files);
        return $str;
   }
}
function my_array($arr)
{
    foreach($arr as $key=>$v)
    {
        if(is_array($key))
        {
            my_array($key);
        }else
        {
            $value.=$v."nt";
        }
    }
    return trim($value);
}
$dir="D:/wamp/www/ny";
echo "<pre>";
var_dump(my_scandir($dir))
?>

这段代码可以无限极遍历了。如图:

打赏本站,你说多少就多少

精彩评论

微信关注

Copyright © 2013-2019 千奇博客 保留所有权利 辽ICP备13008238号