Nenhum produto encontrado nessa seleção.
Laços for em PHP são os mais complexos da linguagem. Você pode controlar suas ações baseando-se em três expressões: um valor inicial (opcional); uma expressão condicional (opcional); uma terceira expressão (opcional), que, normalmente, altera o valor inicial.
for ( $expressão_1; $expressão_2; $expressão_3; ) { // Ação }
A primeira expressão é executada uma vez, sem condição alguma, no começo do laço. Com isso, você pode criar uma variável e dar um valor para ela utilizando essa expressão, por exemplo.
<?php for ( $variavel = 1; $exp2; $exp3; ) { // Ação } ?>
Na expressão acima, a $variavel agora tem valor 1.
A segunda expressão deverá retornar um valor verdadeiro (true) para que o laço seja executado, caso retorne um valor falso (false), o laço termina. Veja abaixo um exemplo de condição que retorna um valor verdadeiro e utiliza o valor da primeira expressão.
<?php for ( $variavel = 1; $variavel < 10; $expressao_3 ) { // Ação } ?>
Perceba que a expressão 2 avalia se $variavel (da expressão 1) é menor do que 10 ($variavel < 10). A cada volta do laço essa expressão será avaliada para que o interpretador do PHP saiba quando parar o laço. Por esse motivo, precisamos alterar o valor de $variavel para que, em algum momento, a expressão seja avaliada como falsa (false). Se não fizermos isso teremos um loop infinito.
A terceira expressão é executada incondicionalmente a cada volta do laço, com isso podemos alterar o valor da primeira expressão utilizando-a.
<?php for ( $variavel = 1; $variavel < 10; $variavel++ ) { echo $variavel; } ?>
Perceba acima que utilizando apenas o laço for, consigo criar uma variável, avaliar o valor dessa variável e alterar seu valor caso necessário. Como no trecho anterior, que criei a $variavel com valor 1, verifiquei se o valor da variável é menor do que 10 ($variavel < 10) e somei mais um ($variavel++) na variável a cada volta do laço.
Resumo das expressões de for em PHP
Só para recapitular de uma maneira mais compacta e resumida, vejamos o que cada expressão faz:
- Expressão 1: É executada apenas uma vez no início do laço;
- Expressão 2: Deve retornar um valor boolean verdadeiro (true) para que o laço continue; É executada a cada volta do laço;
- Expressão 3: É executada a cada volta do laço.
Cada expressão pode estar vazia ou separada por vírgula, porém, o resultado é capturado da última parte. Para a expressão dois, ao contrário do que se imagina, um valor verdadeiro (true) é retornado quando ela estiver vazia.
Isso significa que o trecho de código abaixo está correto:
<?php // Variável inicial $numero = 0; // For sem expressões for ( ; ; ) { // Verifica se $número é maior que 10 if ( $numero > 10 ) { // A palavra break para o laço // Isso evita um laço infinito break; } // Mostra o número na tela echo $numero; // Incrementa o número em +1 $numero++; } ?>
Perceba que a palavra break (significa pausa em inglês), para o laço. Por isso, tive que utilizar uma estrutura condicional if para analisar minha expressão (o mesmo que a expressão 2 do for faz) e executar o "break".
For com arrays
For também pode ser utilizado para percorrer arrays, porém, você vai precisar utilizar a função count do PHP para saber quantos itens existem nesse array, veja:
<?php // Arrays $frutas = array( 'banana', 'maçã', 'uva' ); // For percorre o array for ( $i = 0; $i < count( $frutas ); $i++ ) { echo 'Gosto de comer ' . $frutas[$i] . ' pela manhã <br />'; } ?>
Perceba que no trecho acima criei um array simples com 3 valores. Na expressão 1 do laço for, criei uma variável $i com valor 0, na expressão 2 verifiquei se o valor de $i é menor que o número de itens do meu array, na expressão 3, somei mais um (+1) em $i.
O valor de $i terá o seguinte caminho nesse caso:
- 0: na primeira volta do laço (quando o valor foi criado);
- 1: na segunda volta do laço
- 2: na terceira volta do laço
- Quando o valor for 3, a segunda expressão será avaliada como falsa e o laço para.
Ou seja, o trecho acima seria o mesmo que o trecho abaixo (se não houvesse o for):
<?php // Arrays $frutas = array( 'banana', 'maçã', 'uva' ); echo 'Gosto de comer ' . $frutas[0] . ' pela manhã <br />'; echo 'Gosto de comer ' . $frutas[1] . ' pela manhã <br />'; echo 'Gosto de comer ' . $frutas[2] . ' pela manhã <br />'; ?>
Como temos apenas poucos valores e poucas ações, não faz muita diferença se eu utilizar for ou escrever o código manualmente, porém, imagine o mesmo array com milhares de valores e várias ações dentro do laço! Seria bem inconveniente ter que escrever tudo manualmente.
Outra sintaxe para for
For também pode ser escrito da seguinte maneira:
<?php // Arrays $frutas = array( 'banana', 'maçã', 'uva' ); // For percorre o array for ( $i = 0; $i < count( $frutas ); $i++ ): echo 'Gosto de comer ' . $frutas[$i] . ' pela manhã <br />'; endfor; ?>
Trocar as chaves { e } por dois pontos (:) e a palavra chave endfor; não faz diferença alguma, você pode utilizar a forma que preferir para escrever.
Aulas anteriores
Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.