Usando foreach para modificar array com referencia

Por Fernando Chucre
14/05/2008 – 22:04

Durante meus estudos para a prova de certificação da Zend (é amanhã!!) eu me deparei com uma questão em um simulado. A pergunta era sobre qual a melhor iteração possivel com o seguinte array, um detalhe, era necessario modificar os valores do array:

$myNames = array(’Joao’,'Maria’,'Carlos’);

A resposta correta que o simulado indicava era a estrutura de controle for(;;) mostrando que a estrutura de controle foreach copiava o valor do indice para a variavel determinada. Isso e verdade, na forma comumente usada, porem a estrutura foreach permite o uso de modificador de linguagem & que indica a inicialização de uma referencia. Da seguinte maneira:

foreach ($myNames as &$name)
{
….
}

Desta forma o ponteiro interno do array é resetado para a primeira posição, depois em cada iteração é deslocado uma posição para cima ou frente até o final e sempre usando a referencia, ou seja, a variavel $name é de fato a posição de iteração do array. Quando mudamos o valor da variavel $name mudamos o valor de $myNamos[x], onde x é a iteração atual.

You must be logged in to post a comment.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.