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

Reply via email to