I do not want to delete the whole array, only a particular $item.
given this $results array:

Array
(
["key1"] => Array
(
[0] => value1
[1] => value2
[2] => value 3
(
["key2"] => Array
(
[0] => value4
[1] => value5
[2] => value6
)
)

It is a value item that I want to delete based on a particular criteria.
In each pass I may delete a value item. However, it seems that each
subsequent pass operates on the original $results array and not
the modified one.

-Andres



Daevid Vincent wrote:
foreach ($results as $key => $item) {
    if ($item == 'foo') unset($results[$key]);
 }

-----Original Message-----
From: Andres Gonzalez [mailto:and...@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




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

Reply via email to