On Tue, 2009-06-23 at 12:56 -0600, Kirk.Johnson@xxxxxxxxxxx wrote: > Andres Gonzalez <andres@xxxxxxxxxxxxxxx> 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