downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

RecursiveArrayIterator::getChildren> <ParentIterator::rewind
Last updated: Fri, 20 May 2011

view this page in

The RecursiveArrayIterator class

Introducción

This iterator allows to unset and modify values and keys while iterating over Arrays and Objects in the same way as the ArrayIterator. Additionally it is possible to iterate over the current iterator entry.

Clases sinopsis

RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator {
/* Métodos */
public RecursiveArrayIterator getChildren ( void )
public bool hasChildren ( void )
/* Inherits */
public void ArrayIterator::append ( mixed $value )
public void ArrayIterator::asort ( void )
public int ArrayIterator::count ( void )
mixed ArrayIterator::current ( void )
public array ArrayIterator::getArrayCopy ( void )
public void ArrayIterator::getFlags ( void )
mixed ArrayIterator::key ( void )
public void ArrayIterator::ksort ( void )
public void ArrayIterator::natcasesort ( void )
public void ArrayIterator::natsort ( void )
void ArrayIterator::next ( void )
public void ArrayIterator::offsetExists ( string $index )
public mixed ArrayIterator::offsetGet ( string $index )
public void ArrayIterator::offsetSet ( string $index , string $newval )
public void ArrayIterator::offsetUnset ( string $index )
void ArrayIterator::rewind ( void )
void ArrayIterator::seek ( int $position )
public string ArrayIterator::serialize ( void )
public void ArrayIterator::setFlags ( string $flags )
public void ArrayIterator::uasort ( string $cmp_function )
public void ArrayIterator::uksort ( string $cmp_function )
public string ArrayIterator::unserialize ( string $serialized )
bool ArrayIterator::valid ( void )
}

Table of Contents



add a note add a note User Contributed Notes RecursiveArrayIterator
mccarthy dot richard at gmail dot com 22-Feb-2011 03:23
Using the RecursiveArrayIterator to traverse an unknown amount of sub arrays within the outer array. Note: This functionality is already provided by using the RecursiveIteratorIterator but is useful in understanding how to use the iterator when using for the first time as all the terminology does get rather confusing at first sight of SPL!

<?php
$myArray
= array(
   
0 => 'a',
   
1 => array('subA','subB',array(0 => 'subsubA', 1 => 'subsubB', 2 => array(0 => 'deepA', 1 => 'deepB'))),
   
2 => 'b',
   
3 => array('subA','subB','subC'),
   
4 => 'c'
);

$iterator = new RecursiveArrayIterator($myArray);
iterator_apply($iterator, 'traverseStructure', array($iterator));

function
traverseStructure($iterator) {
   
    while (
$iterator -> valid() ) {

        if (
$iterator -> hasChildren() ) {
       
           
traverseStructure($iterator -> getChildren());
           
        }
        else {
            echo
$iterator -> key() . ' : ' . $iterator -> current() .PHP_EOL;   
        }

       
$iterator -> next();
    }
}
?>

The output from which is:
0 : a
0 : subA
1 : subB
0 : subsubA
1 : subsubB
0 : deepA
1 : deepB
2 : b
0 : subA
1 : subB
2 : subC
4 : c

 
show source | credits | stats | sitemap | contact | advertising | mirror sites