p>Tanto o foreach() quanto o for() são construtores de linguagem no PHP, e não funções como muitos leigos acabam dizendo por aí. Ao contrário do que muitos declaram, esses construtores não fazem a mesma coisa, muito pelo contrário, pois dependendo da situação, devemos escolher qual usar.
O foreach() é muito mais simples que o for(), e só pode ser utilizado para percorrer vetores e objetos. O for() é muito mais complexo, podendo ser usado para percorrer vetores, avaliando uma expressão e executando uma terceira expressão. Veja a seguir como ele funciona.
Como funciona o for()
for(expressão1; expressão2; expressão3)
O for() geralmente é usado para fazer cálculos matemáticos, repetir trechos de código HTML e interagir com vetores e matrizes (arrays). Aqui vão alguns exemplos do uso do for():
Esse trecho de código deve ser lido da seguinte forma: “Para ‘i’ igual à zero, enquanto ‘i’ for menor que 10, incremente ‘i’ em 1″.
Isto irá imprimir na tela:
0 1 2 3 4 5 6 7 8 9
Outro exemplo, agora utilizando vetores:
=0; $j--) echo "O bicho nº $j é: ". $meu_vetor[$j] . "\n"; ?>
Esse trecho de código é lido como: “Para ‘j’ igual à cinco, enquanto ‘j’ for maior ou igual à zero, decremente ‘j’ “. Nesse caso, a única diferença é que estou diminuindo o valor de ‘j’ de um em um ao invés de aumentar, como fiz no primeiro exemplo. Outro detalhe é que o laço será executado até mesmo quando ‘j’ for igual a 0, diferentemente do exemplo anterior onde ‘i’ nunca chega a valer 10, parando no 9. A saída para esse código será:
O bicho nº 5 é o bambi.
O bicho nº 4 é o porco.
O bicho nº 3 é o cachorro.
O bicho nº 2 é o gato.
O bicho nº 1 é o coelho.
O bicho nº 0 é o lobo mau.
Agora vamos para um exemplo mais complexo utilizando na expressão3 e expressão 1 expressões compostas, isso é, 2 ou expressões juntas separadas por uma vírgula:
Isso é lido como “para x igual a zero e y igual a cinco, enquanto x for menor ou igual a cinco, incremente x e decremente y”. A saída será a seguinte:
lobo mau gosta de comer maçã.
coelho gosta de comer alface.
gato gosta de comer carne.
cachorro gosta de comer feijão.
porco gosta de comer arroz.
bambi gosta de comer cenoura.
Note que, enquanto a variável x vai de zero a cinco, a variável y faz o contrário, indo de cinco a zero.
Agora vamos a um exemplo com cálculo: somaremos na variavel $resultado apenas os números pares contidos no vetor $numeros:
A saída para este programa será:
O resultado da soma é: 200
Agora que já sabemos muito sobre o for(), vamos entender o foreach() e para concluir, a diferença entre eles.
Como funciona o foreach()
O foreach() possui duas sintaxes diferentes. A primeira é a seguinte:
foreach($vetor as $valor)
Isso deve ser lido da seguinte maneira “Para cada posição de vetor como valor faça…”
Assim, em cada iteração do laço, o ponteiro interno de $vetor vai avançar 1 posição, e vai atribuir o conteúdo desta posição para $valor, como veremos a seguir:
Isso irá imprimir:
bambi
porco
peixe
gambá
Não há muito o que explicar sobre isso, portanto vamos agura para a segunda sintaxe do foreach():
foreach($vetor as $posicao => $valor)
Nesse exemplo, o foreach avança o ponteiro interno do vetor $vetor a cada iteração e atribui a posição para $posição e o valor contido naquela posição para $valor:
$animal) echo $i . ") " . $animal . "\n"; ?>
Resultado:
0) bambi
1) porco
2) peixe
3) gambá
Agora, utilizando um objeto:
$objeto->nome="Andresa"; $objeto->idade="20 anos"; $objeto->sexo="feminino"; $objeto->profissao="programadora"; $objeto->site="www.andresa.net"; foreach($objeto as $i => $valor) echo $i . ": " . $valor . "\n"; ?>
A saída para este programa será:
nome: Andresa
idade: 20 anos
sexo: feminino
profissao: programadora
site: www.andresa.net
Caso queira saber mais sobre objetos em php, dê uma olhadinha aqui neste link.
Finalizando
Como vocês puderam observar, o for() é um construtor muito mais completo que o foreach(), o que nos permite criar laços muito mais complexos com ele. Em contrapartida, o foreach() por ser mais simples, é mais fácil de ser compreendido e implementado, sendo muito mais indicado no caso de você apenas querer percorrer todas as posições de um vetor até o fim, sem depender de nenhuma condição para parar.
One Response
Leave a Reply
Parabéns pelo site muito bom!
Paulo
Fortaleza-CE