• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • RecursiveFilterIterator::__construct()

    (PHP 5 >= 5.1.0, PHP 7)

    Create a RecursiveFilterIterator from a RecursiveIterator

    说明

    publicRecursiveFilterIterator::__construct(RecursiveIterator$iterator)

    Create a RecursiveFilterIterator from a RecursiveIterator.

    参数

    $iterator

    The RecursiveIterator to be filtered.

    返回值

    没有返回值。

    范例

    Basic RecursiveFilterIterator() example

    <?php
    class TestsOnlyFilter extends RecursiveFilterIterator {
        public function accept() {
            // Accept the current item if we can recurse into it
            // or it is a value starting with "test"
            return $this->hasChildren() || (strpos($this->current(), "test") !== FALSE);
        }
    }
    $array    = array("test1", array("taste2", "test3", "test4"), "test5");
    $iterator = new RecursiveArrayIterator($array);
    $filter   = new TestsOnlyFilter($iterator);
    foreach(new RecursiveIteratorIterator($filter) as $key => $value)
    {
        echo $value . "\n";
    }
    ?>
    

    以上例程的输出类似于:

    test1
    test3
    test4
    test5
    

    RecursiveFilterIterator() example

    <?php
    class StartsWithFilter extends RecursiveFilterIterator {
        protected $word;
        public function __construct(RecursiveIterator $rit, $word) {
            $this->word = $word;
            parent::__construct($rit);
        }
        public function accept() {
            return $this->hasChildren() OR strpos($this->current(), $this->word) === 0;
        }
        
        public function getChildren() {
            return new self($this->getInnerIterator() >getChildren(), $this->word);
        }
    }
    $array    = array("test1", array("taste2", "test3", "test4"), "test5");
    $iterator = new RecursiveArrayIterator($array);
    $filter   = new StartsWithFilter($iterator, "test");
    foreach(new RecursiveIteratorIterator($filter) as $key => $value)
    {
        echo $value . "\n";
    }
    ?>
    

    以上例程的输出类似于:

    test1
    test3
    test4
    test5
    

    参见

    • RecursiveFilterIterator::getChildren() Return the inner iterator's children contained in a RecursiveFilterIterator
    • RecursiveFilterIterator::hasChildren() Check whether the inner iterator's current element has children
    • FilterIterator::accept() Check whether the current element of the iterator is acceptable