ID: 27395 Updated by: [EMAIL PROTECTED] Reported By: jamesn at tocquigny dot com Status: Assigned Bug Type: Scripting Engine problem Operating System: * PHP Version: 4CVS, 5CVS (2004-02-25 Assigned To: zeev New Comment:
Wrong test, this was the one: <?php function theFunction($arg) { $arg[0] = 2; } // Reference on array index $arr1 = array (1); $reference1 =& $arr1[0]; var_dump($reference1); var_dump($arr1); theFunction($arr1); var_dump($reference1); var_dump($arr1); echo "--------\n"; // Reference on array $arr2 = array (1); $reference2 =& $arr2; var_dump($reference2); var_dump($arr2); theFunction($arr2); var_dump($reference2); var_dump($arr2); ?> Previous Comments: ------------------------------------------------------------------------ [2004-02-25 13:26:08] [EMAIL PROTECTED] Here's a bit better test script: <?php function theFunction($arg) { $arg[0] = 2; } $arr1 = array (1); $reference =& $arr1[0]; var_dump($reference); var_dump($arr1); theFunction($arr1); var_dump($reference); var_dump($arr1); ?> ------------------------------------------------------------------------ [2004-02-25 12:02:02] jamesn at tocquigny dot com Description: ------------ There appears to be a problem with php that doesn't allow arrays to be passed by value. The fix appears to be something similar to: http://bugs.php.net/bug.php?id=6417 if (PZVAL_IS_REF(*p)) { SEPARATE_ZVAL(p); } else { zval_add_ref(p); } It would appear that that logic is missing in one place or another. I could not track it down myself. Code similar to this appears to be copy/pasted in various places. Reproduce code: --------------- $array = array(1); // This line makes the call to theFunction() act as if passed by ref.? $reference =& $array[0]; echo $array[0], '<br>'; theFunction($array); echo $array[0], '<br>'; function theFunction($array) { $array[0] = 2; } Expected result: ---------------- you should get 1 and 1 Actual result: -------------- instead you get 1 and 2! ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27395&edit=1