La clase RecursiveFilterIterator

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

Introducción

Este iterador abstracto filtra valores no deseados de RecursiveIterator. Esta clase debería ampliarse para implementar filtros personalizados. El método RecursiveFilterIterator::accept() debe ser implementado en la subclase.

Sinopsis de la Clase

Tabla de contenidos

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