RE: [PHP] modifying within foreach

From: Date: Tue, 23 Jun 2009 18:33:42 +0000
Subject: RE: [PHP] modifying within foreach
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-294467@lists.php.net to get a copy of this message
foreach ($results as $key => $item) { if ($item == 'foo') unset($results[$key]); } > -----Original Message----- > From: Andres Gonzalez [mailto:andres@packetstorm.com] > Sent: Tuesday, June 23, 2009 11:27 AM > To: php-general@lists.php.net > Subject: [PHP] modifying within foreach > > In the following example: > > foreach ($results as $key => $item) { > > //bla bla bla -- unset some of the $items > > } > > 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? > > If so, is there a way that I can tell the foreach statement > to re-read the > array $results? Or am I just going against the grain here? > > -Andres > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.general (#294467) next »