ID: 44658 Updated by: [EMAIL PROTECTED] Reported By: mo at nevali dot net -Status: Open +Status: Bogus Bug Type: Arrays related Operating System: FreeBSD 6 PHP Version: 5.2.5 New Comment:
This is the expected and correct output: Created foo, foo->thing['stuff'] = 1234 Creating Bar, foo->thing['stuff'] = 1234 Created bar, bar->thing2['stuff'] = ABC Created bar, foo->thing['stuff'] = ABC Hint: References are not pointers. Previous Comments: ------------------------------------------------------------------------ [2008-04-07 11:46:21] mo at nevali dot net Description: ------------ Some circumstances involving deep references into arrays can cause assignment of those arrays to always assign references instead of values. Reproduce code: --------------- Please see http://nevali.net/docs/array-refs-testcase.phps Expected result: ---------------- The code should produce the following output: Created foo, foo->thing['stuff'] = 1234 Creating Bar, foo->thing['stuff'] = 1234 Created bar, bar->thing2['stuff'] = ABC Created bar, foo->thing['stuff'] = 1234 Actual result: -------------- Created foo, foo->thing['stuff'] = 1234 Creating Bar, foo->thing['stuff'] = 1234 Created bar, bar->thing2['stuff'] = ABC Created bar, foo->thing['stuff'] = ABC If the (marked) line in Foo's constructor: $this->stuff =& $this->thing['stuff']; is removed, the output is as expected, even though this code should be inert (Foo::stuff is not referenced from anywhere else in the test code). ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=44658&edit=1