Интерфейс RecursiveIterator

(PHP 5 >= 5.1.0, PHP 7)

Введение

Классы, реализующие RecursiveIterator, могут быть использованы для рекурсивного перебора итераторов.

Обзор интерфейсов

RecursiveIterator extends Iterator {
/* Методы */
public RecursiveIterator getChildren ( void )
public bool hasChildren ( void )
/* Наследуемые методы */
abstract public mixed Iterator::current ( void )
abstract public scalar Iterator::key ( void )
abstract public void Iterator::next ( void )
abstract public void Iterator::rewind ( void )
abstract public boolean Iterator::valid ( void )
}

Содержание

Коментарии

RecursiveIterator example:

<?php

class MyRecursiveIterator implements RecursiveIterator
{
    private 
$_data;
    private 
$_position 0;
   
    public function 
__construct(array $data) {
       
$this->_data $data;
    }
   
    public function 
valid() {
        return isset(
$this->_data[$this->_position]);
    }
   
    public function 
hasChildren() {
        return 
is_array($this->_data[$this->_position]);
    }
   
    public function 
next() {
       
$this->_position++;
    }
   
    public function 
current() {
        return 
$this->_data[$this->_position];
    }
   
    public function 
getChildren() {
        echo 
'<pre>';
       
print_r($this->_data[$this->_position]);
        echo 
'</pre>';
    }
   
    public function 
rewind() {
       
$this->_position 0;
    }
   
    public function 
key() {
        return 
$this->_position;
    }
}

$arr = array(01234=> array(102030), 678=> array(123));
$mri = new MyRecursiveIterator($arr);

foreach (
$mri as $c => $v) {
    if (
$mri->hasChildren()) {
        echo 
"$c has children: <br />";
       
$mri->getChildren();
    } else {
        echo 
"$v <br />";
    }

}
?>

Result:






5 has children: 
Array
(
    [0] => 10
    [1] => 20
    [2] => 30
)



9 has children: 
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
2011-10-04 15:43:52
http://php5.kiev.ua/manual/ru/class.recursiveiterator.html
Note that MyRecursiveIterator does not implement the correct return type for getChildren.  Which is why the example code doesn't make much sense.
2016-10-12 22:22:20
http://php5.kiev.ua/manual/ru/class.recursiveiterator.html

    Поддержать сайт на родительском проекте КГБ