ID: 40065
User updated by: ugo at iliona dot net
Reported By: ugo at iliona dot net
Status: Bogus
Bug Type: Arrays related
Operating System: Linux/BSD
PHP Version: 5.2.0
New Comment:
Ok, I see... it's quite logical if foreach behave like this....sorry
for the bogus report then...
But, since it's not a bug, that's a hell of nice weird feature :/
It should probably be put in the documentation that foreach doesn't
unset/reset it's value(s) variable(s) (since it does this for the it's
array pointer, and some languages does this too, it's quite an
unpredictable situation)
Thanks anyway and sorry for this report,
Ugo
Previous Comments:
------------------------------------------------------------------------
[2007-01-08 18:10:55] [EMAIL PROTECTED]
#29992 and it is not a bug.
------------------------------------------------------------------------
[2007-01-08 18:06:52] ugo at iliona dot net
Hmmm...
I haven't found a similar open bug in the database (I wouldn't have
posted it otherwise), but if you say that it is the same as another
one, that's okay for me as long as it is fixed in the next version :)
------------------------------------------------------------------------
[2007-01-08 17:55:24] [EMAIL PROTECTED]
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.
,
------------------------------------------------------------------------
[2007-01-08 17:42:34] ugo at iliona dot net
Description:
------------
Hello,
This bug was tried on multiple Unix versions and multiple processors
(32/64bits), and multiple PHP5 versions (including 5.2.0), so it seems
really to be on the side of PHP.
After using a foreach with a referenced value, and then another foreach
(without the referenced value), the original array is broken.
Apparently, the last value of the array takes the value of the n - 1
last value.
I've reduced the problem to its simplest form and attached it to this
bug report.
Greeting,
Ugo PARSI
Reproduce code:
---------------
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
print_r($arr);
foreach ($arr as $value) {
$value = $value;
}
print_r($arr);
?>
Expected result:
----------------
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 ) Array ( [0] => 2 [1] => 4
[2] => 6 [3] => 8 )
Actual result:
--------------
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 ) Array ( [0] => 2 [1] => 4
[2] => 6 [3] => 6 )
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40065&edit=1