note 102574 added to class.recursivearrayiterator
| From: | mccarthy dot richard at gmail dot com | Date: | Tue, 22 Feb 2011 15:23:56 +0000 |
| Subject: | note 102574 added to class.recursivearrayiterator | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-177217@lists.php.net to get a copy of this message | ||
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!
$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
----
Server IP: 69.147.83.197
Probable Submitter: 86.40.5.98
----
Manual Page -- http://www.php.net/manual/en/class.recursivearrayiterator.php
Edit -- https://master.php.net/note/edit/102574
Del: integrated -- https://master.php.net/note/delete/102574/integrated
Del: useless -- https://master.php.net/note/delete/102574/useless
Del: bad code -- https://master.php.net/note/delete/102574/bad+code
Del: spam -- https://master.php.net/note/delete/102574/spam
Del: non-english -- https://master.php.net/note/delete/102574/non-english
Del: in docs -- https://master.php.net/note/delete/102574/in+docs
Del: other reasons-- https://master.php.net/note/delete/102574
Reject -- https://master.php.net/note/reject/102574
Search -- https://master.php.net/manage/user-notes.php