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

Reply via email to