ID:               46716
 User updated by:  iain at workingsoftware dot com dot au
 Reported By:      iain at workingsoftware dot com dot au
 Status:           Bogus
 Bug Type:         Feature/Change Request
 Operating System: Freebsd 7.0
 PHP Version:      5.2.6
 New Comment:

That means there's no way to use an Iterator and advance the array
pointer more than once per iteration. You can't use a for loop, and you
can't use while + list/each, so you're only option is to use foreach and
use the Iterator specific methods such as:

$iter->next();

etc. which precludes you from writing code that can handle arrays OR
Iterators effectively (unless you actually check the type of the
array/Iterator and handle it differently) such as:

if(!($my_arr instanceof Iterator))
{
    while(current($my_arr))
    {
        list($key,$value) = each($my_arr);
        //do stuff... do we need to advance the pointer again?
        //yes we do ... 
        list($key,$value) = each($my_arr);
        //do stuff... do we need to advance the pointer again?
        //not this time ... 
    }
}

else
{
    while($my_arr->valid())
    {
        ... etc ... 
    }
}

which is highly cumbersome. An Iterator should just behave like an
array when it comes to Iteration, what's the point of having it not work
with list/each?


Previous Comments:
------------------------------------------------------------------------

[2008-12-10 11:48:09] [EMAIL PROTECTED]

This was recently discussed on the developers list and decided to keep
the current behavior which is iterating over the object's property table

------------------------------------------------------------------------

[2008-11-29 11:17:36] iain at workingsoftware dot com dot au

Sorry, my desired result should have been:

0: one
1: two
2: three
0: one
1: two
2: three

------------------------------------------------------------------------

[2008-11-29 11:16:50] iain at workingsoftware dot com dot au

Description:
------------
I can use an Iterator with foreach(), however if I attempt to iterate
over it using list/each it does not behave as expected. Basically I'd
just like to be able to treat an Iterator as I would an array.

Reproduce code:
---------------
sample code at:

http://www.workingsoftware.com.au/iterator_test.phpt

Expected result:
----------------
this is not so much expected, as desired result:

0: one
1: two
2: three

Actual result:
--------------
0: one
1: two
2: three
MyIteratorarr: Array


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=46716&edit=1

Reply via email to