foreach with referenced values
| From: | Matthias Pigulla | Date: | Tue, 12 Dec 2006 09:42:38 +0000 |
| Subject: | foreach with referenced values | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-26906@lists.php.net to get a copy of this message | ||
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.