ID: 20993
Updated by: [EMAIL PROTECTED]
Reported By: henrik dot gebauer at web dot de
-Status: Open
+Status: Closed
Bug Type: Documentation problem
Operating System: Any
PHP Version: 4.0CVS-2002-12-13
New Comment:
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
Previous Comments:
------------------------------------------------------------------------
[2004-05-03 23:46:28] php dot devel at homelinkcs dot com
I don't have any objection. :-D
------------------------------------------------------------------------
[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.
------------------------------------------------------------------------
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