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

Reply via email to