foreach with referenced values

php.internals

Matthias Pigulla

19 years ago
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.

Antony Dovgal

19 years ago
On 12/12/2006 12:42 PM, Matthias Pigulla wrote:
> 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 > )
Did you try a snapshot? 5.2.1-dev Array ( [0] => a [1] => b )
-- Wbr, Antony Dovgal