#20993 [Ver->Sus]: Element value changes without asking

From: Date: Fri, 13 Dec 2002 20:51:47 +0000
Subject: #20993 [Ver->Sus]: Element value changes without asking
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-27654@lists.php.net to get a copy of this message
ID: 20993 Updated by: moriyoshi@php.net Reported By: henrik.gebauer@web.de -Status: Verified +Status: Suspended Bug Type: Variables related Operating System: Any PHP Version: 4.0CVS-2002-12-13 New Comment: This bug has a lot to do with the bug reports mentioned below. http://bugs.php.net/bug.php?id=6417 http://bugs.php.net/bug.php?id=7412 http://bugs.php.net/bug.php?id=15025 As a workaround, you can write as following to avoid this issue. function theFunction($array) { $array = unserialize(serialize($array)); $array[0] = 2; } Previous Comments: ------------------------------------------------------------------------ [2002-12-13 12:50:26] moriyoshi@php.net Verified with 4.2.3 ------------------------------------------------------------------------ [2002-12-13 12:42:22] msopacua@php.net Verified and added testcase to CVS ------------------------------------------------------------------------ [2002-12-13 12:01:33] henrik.gebauer@web.de I create an array an then a reference to an element of that array. Then the array is passed to a function (by value!) which changes the value of the element. After that, the global array has also another value. I would expect this behaviour if I passed the array by reference but I do not. <?php $array = array(1); $reference =& $array[0]; echo $array[0], '<br>'; theFunction($array); echo $array[0], '<br>'; function theFunction($array) { $array[0] = 2; } ?> ------------------------------------------------------------------------ [2002-12-13 12:00:37] henrik.gebauer@web.de I create an array an then a reference to an element of that array. Then the array is passed to a function (by value!) which changes the value of the element. After that, the global array has also another value. I would expect this behaviour if I passed the array by reference but I did not. <?php $array = array(1); $reference =& $array[0]; echo $array[0], '<br>'; theFunction($array); echo $array[0], '<br>'; function theFunction($array) { $array[0] = 2; } ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20993&edit=1

« previous php.bugs (#27654) next »