ID: 36240
Updated by: [EMAIL PROTECTED]
Reported By: dshadow at zort dot net
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Mac OS X
PHP Version: 5.1.2
New Comment:
Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same.
Thank you for your interest in PHP.
Duplicate of bug #29992
Previous Comments:
------------------------------------------------------------------------
[2006-02-01 08:20:39] judas dot iscariote at gmail dot com
BOGUS.
read bug 29992
------------------------------------------------------------------------
[2006-02-01 06:35:00] dshadow at zort dot net
Description:
------------
After using foreach($arr as $k => &$v) to modify the $arr,
iterating again using the same variable $v causes the array to
be altered unexpectedly.
Adding an unset($v) between the two foreach loops, or using a
different variable on the second foreach loop works around the
problem.
Reproduce code:
---------------
<?
$arr = array(
'one' => 1,
'two' => 2,
'three' => 3,
);
foreach($arr as $k => &$v)
if($v == 1)
$v = 'meh';
print_r($arr);
foreach($arr as $k => $v)
;
print_r($arr);
Expected result:
----------------
The code above should not cause the $arr to be modified by
running the second foreach loop.
Actual result:
--------------
The code above outputs the following:
Array ( [one] => meh [two] => 2 [three] => 3 )
Array ( [one] => meh [two] => 2 [three] => 2 )
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=36240&edit=1