for

Loops for são os 'loops' mais complexos em PHP. Eles se comportam como os seus compatíveis em C. A sintaxe de um 'loop' for é:


for (expr1; expr2; expr3) statement
     

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. 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 frequentemente você pode querer terminar o 'loop' usando um comando break condicional em vez de usar a expressão-verdade do for.

Considere os seguintes exemplos. Todos eles mostram números de 1 a 10:


/* exemplo 1 */
 
for ($i = 1; $i <= 10; $i++) {
    print $i;
}
 
/* exemplo 2 */
 
for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    print $i;
}
 
/* exemplo 3 */
 
$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    print $i;
    $i++;
}
 
/* exemplo 4 */
 
for ($i = 1; $i <= 10; 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 'loops' for se torna prático em muitas ocasiões.

O PHP também suporta a "sintaxe de dois-pontos" alternativa para 'loops' for.


for (expr1; expr2; expr3): statement; ...; endfor;
     

Outras linguagens têm um comando foreach para varrer uma matriz ou tabela de hashing. O PHP3 não tem uma construção deste tipo; O PHP4 tem (veja foreach). Em PHP3, você pode combinar while com as funções list() e each() para obter o mesmo efeito. Veja a documentação para estas funções para ter um exemplo.