Re: modifying within foreach
| From: | Kirk dot Johnson at zootweb dot com | 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