ID: 20993 Comment by: php dot devel at homelinkcs dot com Reported By: henrik dot gebauer at web dot de Status: Open Bug Type: Documentation problem Operating System: Any PHP Version: 4.0CVS-2002-12-13 New Comment:
I don't wish to generate unnecessary traffic, however, I have been unable to find any reference to this issue in the current documentation at http://www.php.net/manual. Since, it's been well over a year since this issue (and several related bug reports) has been brought up, can anyone give me an update on this it's status? I consider this a serious problem because, IMHO, the behavior seems illogical from a high-level view of references and copies (cf (from chapter 7 of the manual): "[A]fter assigning one variable's value to another, changing one of those variables will have no effect on the other."). For that reason, furthermore, lack of knowedge of this behavior can make code affected by it quite difficult to debug. Previous Comments: ------------------------------------------------------------------------ [2002-12-18 03:25:45] [EMAIL PROTECTED] We have discussed this issue and it will put a considerable slowdown on php's performance, to fix this properly. Therefore this behavior will be documented. ------------------------------------------------------------------------ [2002-12-13 14:51:47] [EMAIL PROTECTED] 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; } ------------------------------------------------------------------------ [2002-12-13 12:50:26] [EMAIL PROTECTED] Verified with 4.2.3 ------------------------------------------------------------------------ [2002-12-13 12:42:22] [EMAIL PROTECTED] Verified and added testcase to CVS ------------------------------------------------------------------------ [2002-12-13 12:00:37] henrik dot gebauer at web dot 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