我正在测试数组副本上引用的性能/挂钩。我有以下代码:在阵列上奇怪的打印
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 –