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;
    }
    ?>
    
  • 相关阅读:
    洛谷P1261 服务器储存信息问题
    洛谷P2110 欢总喊楼记
    洛谷P2482 [SDOI2010]猪国杀
    洛谷P2756 飞行员配对方案问题
    洛谷P2763 试题库问题
    洛谷P2774 方格取数问题
    Huffman编码
    SA后缀数组
    KMP
    LCA
  • 原文地址:https://www.cnblogs.com/lz0925/p/12876438.html
Copyright © 2011-2022 走看看