Hoje vamos aprender um pouco mais sobre estruturas de repetição, também conhecidas como laços e loops. Estruturas de repetição servem para que, um bloco de instruções sejam executadas até que determinada condição seja satisfeita. Deve-se observar que, caso o bloco de instruções nunca modifique o estado da condição, a estrutura será executada para sempre, uma situação chamada laço infinito.
Em PHP temos os seguintes tipos de loops:
- While
- Do-while
- For
- Foreach
While
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){
instruções
}
Exemplo:
$i = 1;
while ($i<=10){
echo $i++;
}
?>
Do while
Loops do-while são semelhantes aos loops while com a diferença de que os loops do-while primeiro executa o bloco de instruções e depois verifica se a expressão é verdadeira. A sintaxe básica de um comando do-while é:
do {
instruções
} while (expressão)
Exemplo:
$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), ela é avaliada como FALSE ($i não é maior que zero), então a execução do loop terminaria.
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:
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:
$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";
}
?>
