PHP 8.5.0 Released!

Класс 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
/* Наследуемые методы */
}

Содержание

Добавить

Примечания пользователей 2 notes

up
7
lemats
14 years ago
Recursive directory/file listing, filteres ".svn":

<?php

class 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
4
Russell Dias
15 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:

<?php
class 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