RE: [PHP] modifying within foreach
| From: | Daevid Vincent | 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
>