可能重复:
foreach 的奇怪行为
最近在一个 PHP 应用程序中遇到了这个错误。不知道发生了什么。
基本上,它在使用两个组合时出现foreach
(一个带 &,一个不带)。
这是重现问题的测试代码:
$items = array(
array('id'=>1, 'name'=>'foo', 'value'=>150),
array('id'=>2, 'name'=>'bar', 'value'=>190)
);
foreach($items as &$item)
{
$item['percentage'] = $item['value'] * 0.75;
}
var_dump($items); // All Good
foreach($items as $item)
{
var_dump($item); // Shows 1st item twice
}
第二个foreach
循环按预期运行该块两次,但$item
仍停留在第一个项目上。
我知道这可能是由于在第一个循环中使用了引用引起&
的,但我不明白为什么它应该表现得像这样..
任何想法?那是一个错误吗?
在 5.3.8、5.3.10 和 5.4 上获得相同的结果