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