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<a...@ashleysheridan.co.uk> wrote:
On Tue, 2009-06-23 at 12:56 -0600, kirk.john...@zootweb.com wrote:
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
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

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to