Foreach por referência |
Categoria: PHP | ||||
Publicado em 09 de Junho de 2011 | ||||
A partir do PHP 5 é possível usar foreach por referência para alterar o conteúdo de um array, por exemplo. O cuidado a se tomar é que a variável referência sempre deve ser destruída após o foreach, pois ela possui a referência para o último elemento do array, e se usada posteriormente pode alterar os valores do array original. Por exemplo:
Veja que no exemplo acima $v é uma variável referência do elemento atual de $a. Caso o seu conteúdo for alterado, os elementos do array $a serão alterados. Após o término do foreach o unset() foi usado para destruir a variável $v. Isso é correto e SEMPRE deve ser usado, pois caso tivéssemos um código parecido sem o unset(), as informações do array $a se comprometeriam, como no próximo caso:
Após o término do primeiro foreach() o unset não foi usado sobre a variável referência $v. Portanto, $v continua sendo uma referência para o último elemento de $a. No segundo foreach, para cada iteração do loop o valor do elemento atual de $a é atribuído a $v, e consequentemente ao último elemento de $a. O não uso do unset() após foreach por referência pode levar a erros de difícil detecção e debug. |