It would be easy to resolve this problem if we were allowed to break backwards compatibilities, as long as the results of following script can be said to be expected.
<?php $foo = array(1, 2, 3); $bar = array(); $i = count($foo); while (--$i >= 0) { $bar[$i] = &$foo[$i]; } $foo_ref = &$foo; $bar_ref = &$bar; $foo_copy = $foo; $bar_copy = $bar; $foo_copy[1] = '?'; echo 'foo: '; debug_zval_dump($foo); echo 'foo_ref: '; debug_zval_dump($foo_ref); echo 'foo_copy: '; debug_zval_dump($foo_copy); echo 'bar: '; debug_zval_dump($bar); echo 'bar_ref: '; debug_zval_dump($bar_ref); echo 'bar_copy: '; debug_zval_dump($bar_copy); ?> Is this a kind of "Won't fix" thing? Moriyoshi [EMAIL PROTECTED] wrote: > ID: 20993 > Updated by: [EMAIL PROTECTED] > Reported By: [EMAIL PROTECTED] > Status: Verified > Bug Type: Variables related > Operating System: Any > PHP Version: 4.0CVS-2002-12-13 > New Comment: > > Verified with 4.2.3 > > > > Previous Comments: > ------------------------------------------------------------------------ > > [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 Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php