|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2004-02-25 12:02 UTC] 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! PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 14:00:01 2025 UTC |
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); ?>