Hi internals,

please consider:

<?php
 print PHP_VERSION . "\n";
 $a = array('a', 'b');
 foreach ($a as &$ref) ;
 $b = $a;
 $a[0] = '*';
 print_r($b);
?>

Result:
5.2.0
Array
(
    [0] => *
    [1] => b
)

Same with 5.1.4 and 5.1.6. I suppose that using foreach and referencing
the values turns the elements in $a into references, $b is a copy of the
array containing *references* and thus chaning the value of the first
element in $a is visible in $b because both arrays reference the the
same value?

When moving the $b assignment before the foreach, everything works as
expected.

Is this really intended behaviour?

Kind regards,
mp.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to