The RecursiveFilterIterator class

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

Einführung

This abstract iterator filters out unwanted values for a RecursiveIterator. This class should be extended to implement custom filters. The RecursiveFilterIterator::accept() must be implemented in the subclass.

Klassenbeschreibung

Inhaltsverzeichnis

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