Edit report at https://bugs.php.net/bug.php?id=63179&edit=1

 ID:                 63179
 Updated by:         larue...@php.net
 Reported by:        uli dot staerk at globalways dot net
 Summary:            foreach: Using variable reference leads to
                     inconsistent data
-Status:             Open
+Status:             Duplicate
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Linux
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

dup to #50485


Previous Comments:
------------------------------------------------------------------------
[2012-09-28 21:26:52] notzippy at gmail dot com

A variable that is the target of a foreach should be intrinsically unset and 
not need a manual process to do it.

------------------------------------------------------------------------
[2012-09-28 15:16:44] uli dot staerk at globalways dot net

Description:
------------
As you can see from the example, php seems to mix up variables if you use the 
reference in a foreach.

Despite the report bug 43806, I still think this is a bug. The variable must be 
set when calling foreach and must not be influenced by any previous code.

Test script:
---------------
<?php
$testdata = array(
        0 => array('foo' => 'foo'),
        1 => array('bar' => 'bar')
);
foreach($testdata as &$value) {}
foreach($testdata as $key => $value) {
        if($key == 1) {
                print_r($value);
        }
}


Expected result:
----------------
Array
(
    [bar] => bar
)


Actual result:
--------------
Array
(
    [foo] => foo
)


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=63179&edit=1

Reply via email to