the purpose of an iterator is to allow client code to access the various
(aggregate) components of an object while concealing its underlying
implementation.
the client code only has to know about the iterators interface.  thus 1 or
more objects that all have a potentially different data profile internally
can expose something like a getIterator() method.  then client code can
interact cleanly with all such objects, because it knows only 1 interface,
the iterator interface.

http://en.wikipedia.org/wiki/Iterator

-nathan

On 7/23/07, Kevin Waterson <[EMAIL PROTECTED]> wrote:

This one time, at band camp, Jim Lucas <[EMAIL PROTECTED]> wrote:


> I don't get it, why not do this?

> foreach ( $array AS $row ) {
>       foreach ( $row AS $k => $v ) {
>               if ( ! is_array($v) ) {
>                       echo "{$k} -- {$v}<br/>\n";
>               }
>       }
> }

>
> Maybe I am missing the point...  ???

Indeed, whilst your method is simplistic it leaves many copies of the
array
dangling in memory. Every time you call foreach it creates a copy of the
array internally. SPL iterators do things differently and know only one
element at a time. More can be seen at
http://phpro.org/tutorials/Introduction-to-SPL.html

so the final solution was using a foreach, however, using a foreach on an
SPL iterator object implicitly calls the inner iterator giving us all the
SPL goodness in memory savings.



Kind regards
Kevin



--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Reply via email to