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 have any objection. :-D Previous Comments: ------------------------------------------------------------------------ [2004-04-25 20:32:43] [EMAIL PROTECTED] Looks good. any objection? ------------------------------------------------------------------------ [2004-04-22 01:34:52] php dot devel at homelinkcs dot com This is my best effort (with the help of a friend), to document this issue. I have based it on my personal tests as well as information from this and related bug reports, but I assume it goes without saying that this patch should be reviewed by a developer with knowledge in this area before being committed. Thanks for a great programing language! Index: references.xml =================================================================== RCS file: /repository/phpdoc/en/language/references.xml,v retrieving revision 1.27 diff -u -r1.27 references.xml --- references.xml 2003/12/21 15:37:29 1.27 +++ references.xml 2004/04/21 19:20:39 @@ -43,6 +43,21 @@ </para> </note> </para> + <warning> + <simpara> + Due to peculiarities of the internal workings of PHP, if a reference + is made to a single element of an array and then the array is copied, + whether by assignment or when passed by value in a function call, + the reference is copied as part of the array. This means that + changes to any such elements in either array will be duplicated in + the other array (and in the other references), even if the arrays + have different scopes (e.g. one is an argument inside a function and + the other is global)! Elements that did not have references at the + time of the copy, as well as references assigned to those other + elements after the copy of the array, will behave normally (i.e. + independent of the other array). + </simpara> + </warning> <para> The same syntax can be used with functions, that return references, and with <literal>new</literal> operator (in PHP 4.0.4 and later): ------------------------------------------------------------------------ [2004-04-17 17:59:56] [EMAIL PROTECTED] As you may have noted, we have more than 100 open bugs, so its hard to response quickly. However, if you want to submit a patch to the documentation, we are open to contributions. ------------------------------------------------------------------------ [2004-04-16 22:59:25] php dot devel at homelinkcs dot com 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. ------------------------------------------------------------------------ [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. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/20993 -- Edit this bug report at http://bugs.php.net/?id=20993&edit=1