Re: modifying within foreach

From: Date: Tue, 23 Jun 2009 18:45:10 +0000
Subject: Re: modifying within foreach
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-294469@lists.php.net to get a copy of this message
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: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
    


« previous php.general (#294469) next »