[英]Strange foreach loop after modifying array
当我写一些代码时,PHP让我感到困惑,因为我没想到以下代码的结果:
$data = array(array('test' => 'one'), array('test' => 'two'));
foreach($data as &$entry) {
$entry['test'] .= '+';
}
foreach($data as $entry) {
echo $entry['test']."\n";
}
我认为它应该输出
one+
two+
但结果是: http : //ideone.com/e5tCsi
one+
one+
任何人都可以向我解释原因吗?
这是预期的行为,另请参阅https://bugs.php.net/bug.php?id=29992 。
使用第二个foreach时保持引用,因此当使用第二个foreach时, $entry
的值仍然指向$data[1]
,将被第一个值覆盖。
Ps(感谢@billyonecan说的):你需要先unset($entry)
,这样你的引用才会被销毁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.