Re: modifying within foreach

From: Date: Tue, 23 Jun 2009 19:25:42 +0000
Subject: Re: modifying within foreach
References: 1 2 3 4 5  Groups: php.general 
Request: Send a blank email to php-general+get-294477@lists.php.net to get a copy of this message
Ashley Sheridan wrote:
On Tue, 2009-06-23 at 15:07 -0400, Eddie Drapkin wrote:
It's just foreach($foo as $key => &$item) { } You can't assign the key by reference >.> On Tue, Jun 23, 2009 at 3:04 PM, Ashley Sheridan<ash@ashleysheridan.co.uk> wrote:
On Tue, 2009-06-23 at 12:56 -0600, Kirk.Johnson@zootweb.com wrote:
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
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
Yeah, hehe, I was trying to remember off the top of my head, and obviously forgot! :p *slaps self*
Your brain is in PHP4 mode... *slaps Ashley*
:)
Cheers, Rob. -- http://www.interjinn.com Application and Templating Framework for PHP

« previous php.general (#294477) next »