我正在測試數組副本上引用的性能/掛鉤。我有以下代碼:在陣列上奇怪的打印
function ScoreWords($Value){
$WordList = array(
"Amazing" => 1,
"Value" => 300,
"Elements" => 30,
"Another" => 0
);
if (array_key_exists($Value,$WordList)){
return $WordList[$Value];
}
}
$array = ["Value","Another",1,2,3,4];
echo implode(',', $array), "<br>";
foreach ($array as &$value) {
ScoreWords($value);
}
echo implode(',', $array), "<br>";
foreach ($array as $value) {
ScoreWords($value);
}
echo implode(',', $array), "<br>";
但是看起來,上面粘貼的代碼工作得很好。輸出是:
值,另一個,1,2,3,4-
值,另一個,1,2,3,4-
值,另一個,1,2,3,3-
我發現這是錯誤的,因爲內爆實際上並非必要,但這引發了一個問題。爲什麼最終印刷品有重複值,而不是4
的正確值?不管數組的內容是什麼。它似乎將最後一個元素的第二個元素複製爲最後一個元素?
閱讀[10級最常見的錯誤PHP程序員製作]這個列表#1(http://www.toptal.com/php/10-most-common-mistakes-php-programmers -make) –
@MarkBaker:哇。這完全解釋了這裏的確切問題! :-D –