可能重複:
Strange behavior Of foreach
Strange behaviour after loop by reference - Is this a PHP bug?的foreach和參考
我有用foreach一個問題,我無法理解第二的foreach。
爲什麼$ foo數組的第三部分的值爲'two'!
儘管我們知道,如果我們刪除'&'(在第一個foreach中),問題將解決,但爲什麼?
<?php
$foo = array('one', 'two', 'three');
foreach ($foo as &$bar)
{
// no-op
}
var_dump($foo);
foreach ($foo as $bar)
{
// no-op
}
var_dump($foo);
?>
###############################################
生產:
array(3) {
[0]=>string(3) "one"
[1]=>string(3) "two"
[2]=>&string(5) "three"
}
array(3) {
[0]=>string(3) "one"
[1]=>string(3) "two"
[2]=>&string(3) "two"
}
這第二的foreach基本上是:'的foreach($ foo的爲$ foo的[2])'。因此,每次迭代時,都會使用當前元素更新$ foo的最後一個元素。而且由於最後一個元素丟失了,你最終會在倒數第二個位置結束。 – Matthew 2012-07-25 19:18:42