重複の可能性:
foreach の奇妙な動作
最近、PHP アプリでこのバグに遭遇しました。何が起こっているのかわからない。
foreach
基本的には2つ(&あり、なし)を組み合わせて使用した場合に現れます。
問題を再現するテスト コードを次に示します。
$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
}
2 番目のforeach
ループでは、予想どおりブロックが 2 回実行されますが$item
、最初の項目でスタックしたままです。
これは最初のループでの参照の使用が原因である可能性が高いことは理解し&
ていますが、なぜこのように動作する必要があるのか わかりません..
何か案が?それはバグですか?
5.3.8、5.3.10、および 5.4 で同じ結果が得られる