RecursiveFilterIterator クラス

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

はじめに

この抽象イテレータは、不要な値を RecursiveIterator から取り除きます。 このクラスを継承して、独自のフィルタを実装することができます。 RecursiveFilterIterator::accept() は、サブクラスで必ず実装しなければなりません。

クラス概要

abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator {
/* メソッド */
public __construct(RecursiveIterator $iterator)
public hasChildren(): bool
/* 継承したメソッド */
}

目次

add a note

User Contributed Notes 2 notes

up
8
lemats
14 years ago
Recursive directory/file listing, filteres ".svn":<?phpclass MyRecursiveFilterIterator extends RecursiveFilterIterator {    public static $FILTERS = array(        '.svn',    );    public function accept() {        return !in_array(            $this->current()->getFilename(),            self::$FILTERS,            true        );    }}$dirItr    = new RecursiveDirectoryIterator('/sample/path');$filterItr = new MyRecursiveFilterIterator($dirItr);$itr       = new RecursiveIteratorIterator($filterItr, RecursiveIteratorIterator::SELF_FIRST);foreach ($itr as $filePath => $fileInfo) {    echo $fileInfo->getFilename() . PHP_EOL;}?>
up
3
Russell Dias
14 years ago
I had to create a filter to get values greater than a certain number in a multidimensional array.Hope someone else finds it helpful:<?phpclass GreaterThanFilter extends RecursiveFilterIterator {    protected $limit;    public function __construct(RecursiveIterator $recursiveIter, $limit) {        $this->limit = $limit;        parent::__construct($recursiveIter);    }    public function accept() {        return $this->hasChildren() || strlen($this->current()) >= $this->limit;    }     public function getChildren() {        return new self($this->getInnerIterator()->getChildren(), $this->limit);    }}$iter = new RecursiveArrayIterator($array);$filter   = new GreaterThanFilter($iter, 5);foreach(new RecursiveIteratorIterator($filter) as $key => $value){    echo $value . "\n";}?>
To Top