Estruturas de Controle
PHP Manual

for

(PHP 4, PHP 5)

O loop for é o loop mais complexo no PHP. Ele tem comportamento semelhante ao C. A sintaxe do loop for é:

for (expr1; expr2; expr3)
    statement

A primeira expressão (expr1) é executada incondicionalmente somente no começo do loop.

No começo de cada iteração a expr2 é avaliada. Se a avaliação resultar em TRUE, o loop continua e as instruções aninhada são executadas. Se a avaliação resultar em FALSE, a execução do loop termina.

No final de cada iteração, a expr3 é executada.

Cada uma das expressões podem sem vazias ou conter múltiplas expressões separadas por vírgulas. Na expr2, todas as expressões separadas por vírgula são avaliadas mas o resultado é obtido da última parte. Se a expr2 estiver vazia significa que o loop deve ser executado indefinidamente (O PHP considera implicitamente como TRUE, igual ao C). Isto pode não ser tão inútil quanto você pensa, pois muitas vezes você desejar que o loop termine usando a instrução break ao invés de usar a expressão verdade do for.

Analise os seguintes exemplos. Todos exibem números de 1 até 10:

<?php
/* exemplo 1 */

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

/* exemplo 2 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++);
?>

É claro que o primeiro exemplo aparenta ser o melhor (ou talvez o quarto), mas você pode achar que usar expressões vazias no loop for seja vantajoso em algumas ocasiões.

O PHP também suporta a sintaxe alternativa "dois pontos" para o loop for.

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

É comum para muitos usuários iterar em arrays como no example abaixo.

<?php
/*
 * Esta é uma array com alguns dados que devem ser modificadoswant to modify
 * durante a execuçao do loop for.
 */
$people = array(
    array(
'name' => 'Kalle''salt' => 856412),
    array(
'name' => 'Pierre''salt' => 215863)
);

for(
$i 0$i count($people); ++$i) {
    
$people[$i]['salt'] = mt_rand(000000999999);
}
?>

O código acima pode se tornar lento, pois o tamanho do array será calculado a cada iteração. Desde que o tamanho nunca mude, o loop pode ser facilmente otimizado usando uma variável intermediária para guardar o tamanho ao invés de executar repetidamente o count():

<?php
$people 
= array(
    array(
'name' => 'Kalle''salt' => 856412),
    array(
'name' => 'Pierre''salt' => 215863)
);

for(
$i 0$size count($people); $i $size; ++$i) {
    
$people[$i]['salt'] = mt_rand(000000999999);
}
?>


Estruturas de Controle
PHP Manual