Estruturas de repetição

De Aprenda PHP - PHPit

Estruturas de repetição (ou simplesmente loops), são sentenças que irão repetir determinados trechos do código quantas vezes forem necessárias até que se obtenha um resultado desejado. Em PHP temos os seguintes tipos de loops:

Tabela de conteúdo

While (Enquanto)

Loops while são o tipo mais simples de criar um loop em PHP. A sintaxe básica de um comando while é:

while (expressão a ser satisfeita) {
   instruções
}

No seguinte exemplo, iremos declarar uma variável ($i) com o valor 1 e criaremos um loop que fique executando o código ENQUANTO a expressão for verdadeira. Em cada loop iremos imprimir o valor desta variável e iremos somar +1 a ela.

<?php

$i = 1;
// Enquanto $i for menor ou igual a 10
while ($i <= 10) {
   echo $i;
   $i = $i + 1;
}

?>


Do while (Faça enquanto)

Loops do-while são semelhantes aos loops while com a diferença de o código, invariavelmente, será executado pelo menos uma vez, pois a a verificação da condição só é feita no final de cada loop (enquanto no while a expressão não será executada caso já seja avaliada como falsa). A sintaxe básica de um comando do-while é:

do {
   instruções
} while (expressão)

Exemplo:

<?php

$i = 0;
do {
   echo $i;
} while ($i > 0);

?>

O loop acima rodaria exatamente uma vez, porque ele executaria o bloco de instruções logo em seguida verificaria a expressão ($i > 0), que é avaliada como FALSE ($i não é maior que zero), então a execução do loop terminaria.

Importante: Caso a sentença seja modificada para que seja avaliada como TRUE, será gerado um loop infinito. Isso irá travar o PHP e as vezes o seu navegador, até que o script seja interrompido em decorrência da ultrapassagem do tempo máximo de execução de um script (que por padrão é 30 segundos).


For

Loops for são os laços mais complexos em PHP. A sintaxe básica de um comando for é:

for (expr1; expr2; expr3){
     instruções
}

A primeira expressão ‘expr1’ é executada uma vez incondicionalmente no começo do loop. Antes de cada execução do bloco de instruções a ‘expr2’ é avaliada. Se a mesma for avaliada como TRUE, o loop continua e o bloco de instruções é executado. Se for avaliada como FALSE, a execução do loop termina. No fim da execução do bloco de instruções a expressão ‘expr’ é avaliada (executada). E assim o loop volta a executar a expressão ‘expr1’ novamente.

Exemplo:

<?php

for ($i=1;$i<=10;$i++) {
    echo $i;
}

?>


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. A duas sintaxes básicas para o comando. O segundo é uma abreviatura, mas útil do que primeira:

foreach (expressao_array as $valor)
     instruções
foreach (expressao_array as $chave => $valor)
     instruções

A primeira forma varre uma 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 bloco de instruções você estará olhando para o próximo elemento). A segunda forma faz a mesma coisa, só que a chave do elemento atual será atribuído à variável $chave em cada execução do bloco de instruções.

Exemplos:

<?php

$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
    echo $value;
}

$arr = array(1, 2, 3, 4);
foreach ($arr as $key => $value) {
    echo "Chave: $key - Valor: $value";
}

?>
Ferramentas pessoais