Bug #64403 [Nab]: missing iterator object with RecursiveIteratorIterator::getInnerIterator
| From: | namarpi at yahoo dot com | Date: | Mon, 11 Mar 2013 12:46:41 +0000 |
| Subject: | Bug #64403 [Nab]: missing iterator object with RecursiveIteratorIterator::getInnerIterator | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-177728@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=64403&edit=1
ID: 64403
User updated by: namarpi at yahoo dot com
Reported by: namarpi at yahoo dot com
Summary: missing iterator object with
RecursiveIteratorIterator::getInnerIterator
Status: Not a bug
Type: Bug
Package: SPL related
Operating System: Windows XP
PHP Version: 5.4.12
Block user comment: N
Private report: N
New Comment:
I badly missed the point. Thank you for the quick hint.
Previous Comments:
------------------------------------------------------------------------
[2013-03-11 12:06:28] salathe@php.net
The RecursiveIteratorIterator is only iterating over the "leaf nodes". It looks
like you want to use the RecursiveIteratorIterator::SELF_FIRST or
RecursiveIteratorIterator::CHILD_FIRST iteration mode (default is
RecursiveIteratorIterator::LEAVES_ONLY).
------------------------------------------------------------------------
[2013-03-11 11:05:49] namarpi at yahoo dot com
Description:
------------
After using RecursiveIteratorIterator::getInnerIterator method in a loop, there is a missing
RecursiveArrayIterator object in the result.
For comparison, RecursiveIteratorIterator::getSubIterator method returns the expected result also.
Test script:
---------------
$array = array (
'question' => 'text',
'items' => array (
'0' => array ( 'phrase' => 'text text', ),
'1' => array ( 'phrase' => 'text text text', ),
),
);
$array_object = new ArrayObject( $array, 0, "RecursiveArrayIterator" );
$iterator = new RecursiveIteratorIterator( $array_object->getIterator() );
foreach( $iterator as $key => $value ) {
print_r( $iterator->getInnerIterator() ); // missing RecursiveArrayIterator Object of
"items"
}
while( $iterator->valid() ) {
print_r( $iterator->getInnerIterator() ); // missing RecursiveArrayIterator Object of
"items"
$iterator->next();
}
foreach( $iterator as $key => $value ) {
for( $i = 0; $i <= $iterator->getDepth(); $i++ ) {
print_r( $iterator->getSubIterator($i) ); // correct
}
}
Expected result:
----------------
The getInnerIterator method should return this object too:
[11-Mar-2013 10:37:04 UTC] RecursiveArrayIterator Object
(
[storage:ArrayIterator:private] => Array
(
[0] => Array
(
[phrase] => text text
)
[1] => Array
(
[phrase] => text text text
)
)
)
Actual result:
--------------
Missing the Expected result.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=64403&edit=1