for
Loops for são os laços mais complexos em PHP. Eles se comportam como os seus compatÃveis em C. A sintaxe de um loop for é:
for (expr1; expr2; expr3) instrucoes
A primeira expressão (expr1) é avaliada (executada) uma vez incondicionalmente no começo do loop.
No começo de cada iteração, expr2 é avaliada. Se ela é avaliada como TRUE, o loop continua e o(s) comando(s) aninhado(s) é(são) executado(s). Se é avaliada como FALSE, a execução do 'loop' termina.
No fim de cada iteração, expr3 é avaliada (executada).
Cada uma das expressões pode ser vazia ou conter múltiplas expressões separadas por vÃrgulas. Em expr2, todas as expressões separadas por vÃrgula são avaliadas mas o resultado é obtido pela última parte. expr2 vazia significa que o loop pode rodar indefinidamente (PHP considera-a implicitamente como TRUE, como em C). Isto pode não ser tão inútil quanto você pode pensar, pois freqüentemente você pode querer terminar o 'loop' usando uma instrução break condicional em vez de usar a expressão-verdade do for.
Considere os seguintes exemplos. Todos eles mostram números de 1 até 10:
<?php
/* exemplo 1 */
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
/* exemplo 2 */
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
/* exemplo 3 */
$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
/* exemplo 4 */
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
Obviamente, o primeiro exemplo parece ser o mais bonito (ou talvez o quarto), mas você pode perceber que a possÃvel utilização de expressões vazias em laços for se torna prático em algumas ocasiões.
O PHP também suporta a "sintaxe de dois-pontos" alternativa para laços for:
for (expr1; expr2; expr3): instrucoes; ...; endfor;