O PHP4 (mas não o PHP3) inclui um construtor foreach, muito parecido com o PERL e outras linguagens. Isto oferece uma maneira fácil de iterar sobre matrizes. foreach funciona somente com arrays, e lançará um erro se tentar utilizá-lo em uma variável de qualquer tipo diferente ou em variáveis não inicializadas. Há duas sintaxes; a segunda é uma abreviatura, mas bem útil do que primeira:
foreach (expressao_array as $valor) instrucoes foreach (expressao_array as $chave => $valor) instrucoes |
A primeira forma varre uma dada matriz dada por expressao_array. Em cada 'loop', o valor do elemento corrente é atribuído a $valor e o ponteiro interno da matriz é avançado em uma posição (assim, no próxima iteração você estará olhando para o próximo elemento).
A segunda forma faz a mesma coisa, exceto pelo fato de que a chave do elemento atual será atribuído à variável $chave em cada iteração.
Nota: Quando o foreach inicia sua primeira execução, o ponteiro interno da matriz é zerado automaticamente para o primeiro elemento do array. Isto significa que você não precisa chamar reset() antes de um loop foreach .
Nota: Note também que foreach opera sobre uma cópia do array especificado, não o próprio array, e portanto, o ponteiro do array original não é modificado como na instrução each(), que altera o elemento do array selecionado, mas isso não se reflete o array original. Entretanto, o ponteiro interno do array original é movimentado pelo processamento do array. Assumindo que o laço foreach rode até o fim, o ponteiro interno do array estará posicionado no fim do array.
Nota: foreach tem a habilidade de evitar mensagens de erro com '@'.
Você pode ter notado que os seguintes itens são funcionalmente idênticos:
<?php |
<?php |
Mais alguns exemplos para demonstrar os usos:
<?php |