O PHP4 (não o PHP3) inclui uma construção foreach, muito parecido com o perl e outras linguagens. Isto simplesmente oferece uma maneira fácil de iterar sobre matrizes. Há duas sintaxes; a segunda é uma extensão menor, mas útil, da primeira:
A primeira forma varre uma dada matriz dada por array_expression. Em cada 'loop', o valor do elemento corrente é atribuído a $value e o ponteiro interno da matriz é avançado em uma posição (assim, no próximo 'loop' você estará olhando para o próximo elemento).
A segunda forma faz a mesma coisa, exceto pelo fato de que a chave do elemento corrente será atribuído à variável $key em cada 'loop'.
Nota: Quando o foreach inicia sua primeira execução, o ponteiro interno da matriz é zerado automaticamente para o primeiro elemento da matriz. 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 da matriz especificada, não na própria matriz, portanto o ponteiro da matriz não é modificado como na construção 'each'.
Você pode ter notado que os seguintes itens são funcionalmente idênticos:
reset ($arr); while (list(, $value) = each ($arr)) { echo "Value: $value<br>\n"; } foreach ($arr as $value) { echo "Value: $value<br>\n"; } |
reset ($arr); while (list($key, $value) = each ($arr)) { echo "Key: $key; Value: $value<br>\n"; } foreach ($arr as $key => $value) { echo "Key: $key; Value: $value<br>\n"; } |
Mais alguns exemplos para demonstrar os usos:
/* exemplo de foreach 1: só valor */ $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Valor corrente de \$a: $v.\n"; } /* exemplo de foreach 2: valor (com a chave impressa para ilustração) */ $a = array (1, 2, 3, 17); $i = 0; /* só para propósito de ilustração */ foreach($a as $v) { print "\$a[$i] => $k.\n"; } /* exemplo de foreach 3: chave e valor */ $a = array ( "one" => 1, "two" => 2, "three" => 3, "seventeen" => 17 ); foreach($a as $k => $v) { print "\$a[$k] => $v.\n"; } |