On Tue, 2009-06-23 at 12:56 -0600, kirk.john...@zootweb.com wrote:
> Andres Gonzalez <and...@packetstorm.com> wrote on 06/23/2009 12:26:38 PM:
> 
> > I want to modify $results within the foreach. In other words,
> > during a given pass of this iteration, I want to delete some
> > of the items based on particular conditions. Then on the next
> > pass thru the foreach, I want $results to be the newer, modified
> > array.
> > 
> > This does not seem to work. It appears that the foreach statement
> > is implemented such that $results is read into memory at the start
> > so that any modifications I make to it during a given pass, are ignored
> > on the next pass. Is this true?
> 
> foreach works on a copy of an array, so the behavior you saw is expected. 
> See the online manual.
> 
> You could use a while loop, or, instead of unset-ing elements of $results, 
> store the elements you want to keep into a new array.
> 
> Kirk

What about passing it by reference?

foreach($results as &$key => &$item)
{
    // modify items here
}

Thanks
Ash
www.ashleysheridan.co.uk


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

Reply via email to