Оператор PHP foreach по ссылке: неожиданное поведение при повторном использовании итератора

этот код дает неожиданный результат:

$array=str_split("abcde");
foreach($array as &$item)
    echo $item;

echo "\n";
foreach($array as $item)
    echo $item;

вывод:

abcde
abcdd

при использовании & $ item для второго цикла все работает нормально.

Я не понять, как этот код повлияет на содержимое $ array . Я мог бы подумать, что неявное unset ($ header) удалит последнюю строку, но откуда берется двойной dd ?

9
задан Gabriele Petrioli 6 January 2013 в 15:09
поделиться