Re: modifying within foreach

From: Date: Tue, 23 Jun 2009 18:56:08 +0000
Subject: Re: modifying within foreach
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-294470@lists.php.net to get a copy of this message
Andres Gonzalez <andres@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

« previous php.general (#294470) next »