ID:               20993
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Suspended
+Status:           Open
-Bug Type:         Scripting Engine problem
+Bug Type:         Documentation problem
 Operating System: Any
 PHP Version:      4.0CVS-2002-12-13
 New Comment:

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.


Previous Comments:
------------------------------------------------------------------------

[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:01:33] [EMAIL PROTECTED]

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
do not.

<?php

$array = array(1);

$reference =& $array[0];

echo $array[0], '<br>';
theFunction($array);

echo $array[0], '<br>';

function theFunction($array) {
    $array[0] = 2;
}

?>

------------------------------------------------------------------------

[2002-12-13 12:00:37] [EMAIL PROTECTED]

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


-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to