ID: 24486
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
-Status: Open
+Status: Feedback
-Bug Type: Unknown/Other Function
+Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 4.3.2
New Comment:
And you know that foreach() operates with a copy of the original
array..? And this reference thing is problem..why?
Previous Comments:
------------------------------------------------------------------------
[2003-07-03 11:19:53] [EMAIL PROTECTED]
Description:
------------
we just detected a strange behaviour with references and foreach:
after the foreach() is done in the sample code the & disappear in the
var_dump for the first two elements, the third is of course still a
valid reference because $row exists
i tried to reproduce that effect in different ways but it only happens
when using a foreach
Reproduce code:
---------------
<pre><?php
$arr = array(1, 2, 3);
for ($i = 0; $i < count($arr); $i++) {
$row =& $arr[$i];
$row = $row * $row;
}
var_dump($arr);
reset ($arr);
while (list(, $value) = each ($arr))
echo "value: $value\n";
var_dump($arr);
foreach($arr AS $value)
echo "value: $value\n";
var_dump($arr);
?>
Actual result:
--------------
array(3) {
[0]=>
&int(1)
[1]=>
&int(4)
[2]=>
&int(9)
}
value: 1
value: 4
value: 9
array(3) {
[0]=>
&int(1)
[1]=>
&int(4)
[2]=>
&int(9)
}
value: 1
value: 4
value: 9
array(3) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
&int(9)
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=24486&edit=1