zoukankan      html  css  js  c++  java
  • PHP使用SPL函数迭代遍历目录

    • 有个非常好的案例就是遍历目录。常规的做法就是使用 scandir ,然后跳过「.「 和 「..」,以及其它未满足条件的文件。例如你需要遍历个某个目录抽取其中的图片文件,就需要判断是否是 jpg、gif 结尾。

    下面的代码就是使用 SPL 的迭代器执行上述递归寻找指定目录中的图片文件的例子

    <?php
    class RecursiveFileFilterIterator extends FilterIterator {
      // 满足条件的扩展名
      protected $ext = array('jpg','gif');
      /**
       * 提供 $path 并生成对应的目录迭代器
       */
      public function __construct($path) {
        parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)));
      }
      /**
       * 检查文件扩展名是否满足条件
       */
      public function accept() {
        $item = $this->getInnerIterator();
        if ($item->isFile() && 
            in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext)) {
          return TRUE;
        }
      }
    }
    // 实例化
    foreach (new RecursiveFileFilterIterator('/path/to/something') as $item) {
      echo $item . PHP_EOL;
    }
    ?>
    
  • 相关阅读:
    WQS二分
    虚树
    洛谷集训队题单Part1
    动态点分治
    点分治
    最小乘积模型
    线段树分治
    分层图最短路
    学长学姐们的测试-2
    线性dp
  • 原文地址:https://www.cnblogs.com/lz0925/p/12876438.html
Copyright © 2011-2022 走看看