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

 ID:                 62233
 Updated by:         [email protected]
 Reported by:        a1283465 at jnxjn dot com
 Summary:            foreach destroys arrays
-Status:             Open
+Status:             Duplicate
 Type:               Bug
 Package:            Arrays related
 Operating System:   Linux
 PHP Version:        5.3.13
 Block user comment: N
 Private report:     N

 New Comment:

Duplicate of https://bugs.php.net/bug.php?id=60024 and a few other bugs linked 
in there.


Previous Comments:
------------------------------------------------------------------------
[2012-06-05 15:59:00] a1283465 at jnxjn dot com

Description:
------------
See script outputs below.

Please note that the array is already broken after the first foreach run 
because the last array element is now a pointer.

Workaround for the second foreach loop:
Do a unset($val) between the two foreach loops.

Test script:
---------------
$a = array(1,2,3);
var_dump($a); // array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
foreach ($a as &$val) { } // Now the array is broken
var_dump($a); // array(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(3) }
foreach ($a as $val) { } // Now the array is destroyed
var_dump($a); // array(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(2) }
echo $a[2]; // Output: 2, Expected: 3



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



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

Reply via email to