只是碰到這種錯誤的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
重用引用時,這是一個衆所周知的副作用。我確信遍地都有重複的問題。 '第一次循環後取消設置($ item)'。 – deceze 2012-04-18 01:49:39
嗯,我很高興人們寧願把它稱爲一個衆所周知的副作用,而不是一個bug :) – Ben 2012-04-18 01:56:42
@FelixKling謝謝你的參考。投票結束我自己的問題(不要以爲我曾經這樣做過) – Ben 2012-04-18 01:56:56