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";
}
|