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

Reply via email to