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?