PHP Foreach Pass по ссылке: дублируется последний элемент? (Ошибка?)

У меня было очень странное поведение с простым сценарием php, который я писал. Я сократил его до минимума, необходимого для воссоздания ошибки:

<?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?

?>

Это выводит:

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

Это ошибка или какое-то действительно странное поведение, которое должно произойти?

155
задан John Smith 20 May 2013 в 03:48
поделиться