首页 > 代码库 > 遍历 目录的几种有效办法

遍历 目录的几种有效办法

这一两个月来到新公司 刚好赶上项目进度,加班有点多,忘了记录点什么。。刚刚商品上传扫描 这块用上了之前研究的 目录相关技巧的 知识,很开心;当然下一期的 迭代器的讲解更有意思 ^-^;

 

传统扫描目录(我基本弃用了):

/**********************
一个简单的目录递归函数
第一种实现办法:用dir返回对象
 ***********************/
function tree($directory)
{
    $mydir = dir($directory);
    echo "<ul>\n";
    while($file = $mydir->read())
    {
        if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))
        {
            echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n";
            tree("$directory/$file");
        }
        else
            echo "<li>$file</li>\n";
    }
    echo "</ul>\n";
    $mydir->close();
}

  

第二种:php5.4 更新的,比较好用,遍历目录

/**
 * @desc 使用扫描目录函数来遍历
 * @Author  FredGui
 * @param string $path
 */
function dirList($path = ‘/var/www/html/guimm/test‘){
    foreach(scandir($path) as $i => $mod)
    {
        if(is_dir(‘/var/www/html/guimm/test/‘.$mod) && !in_array($mod,[‘.‘,‘..‘]))
        {
            test1(‘/var/www/html/guimm/test/‘.$mod);
            echo ‘目录是:‘. $mod . "<br/>";
        }else{
            $files[$i] = $mod;
            echo ‘文件:‘. $mod . "<br/>";
        }
    }
}

最后一种 我现在 用的,迭代器,他的好处就不多说了,下一期博客 会讲解相关的迭代器原理

/**
 * @desc 遍历目录,用文件系统迭代器
 * @Author  FredGui
 * @param string $path
 */
function fileList( $path = ‘/var/www/html/guimm/test‘){

    $file = new FilesystemIterator($path);
    foreach ($file as $fileinfo) {
        /** @var $fileinfo SplFileInfo */
       if($fileinfo->isFile()){
           echo $fileinfo -> getFilename() . "<br/>";
       }elseif($fileinfo->isDir()){
           echo $fileinfo->getPathname() . "<br/>";
           fileList($fileinfo->getPathname());
       }
    }
}

  

 

遍历 目录的几种有效办法