PHP Foreach Pass por referência: duplicação de último elemento? (Erro?

Acabei de ter um comportamento muito estranho com um script php simples que estava escrevendo. Reduzi-o ao mínimo necessário para recriar o bug:

<?php

$arr = array("foo",
             "bar",
             "baz");

foreach ($arr as &$item) { /* do nothing by reference */ }
print_r($arr);

foreach ($arr as $item) { /* do nothing by value */ }
print_r($arr); // $arr has changed....why?

?>

Essa saída:

Array
(
    [0] => foo
    [1] => bar
    [2] => baz
)
Array
(
    [0] => foo
    [1] => bar
    [2] => bar
)

Isso é um bug ou algum comportamento realmente estranho que deveria acontecer?

questionAnswers(6)

yourAnswerToTheQuestion