for

(PHP 4, PHP 5, PHP 7, PHP 8)

for 루프는 PHP에서 가장 복잡한 루프입니다. 그들은 C 대응물처럼 행동합니다. for 루프의 구문은 다음과 같습니다.

for (expr1; expr2; expr3)
    statement
                

첫 번째 표현식(expr1)은 루프의 시작 부분에서 무조건 한 번 평가(실행)됩니다.

각 반복이 시작될 때 expr2가 평가됩니다. true로 평가되면 루프가 계속되고 내포된 명령문이 실행됩니다. false로 평가되면 루프 실행이 종료됩니다.

각 반복이 끝나면 expr3이 평가(실행)됩니다.

각 표현식은 비어 있거나 쉼표로 구분된 여러 표현식을 포함할 수 있습니다. expr2에서는 쉼표로 구분된 모든 표현식이 평가되지만 결과는 마지막 부분에서 가져옵니다. expr2가 비어 있다는 것은 루프가 무기한 실행되어야 함을 의미합니다(PHP는 C처럼 암시적으로 이를 true로 간주합니다). for truth 식을 사용하는 대신 조건부 break 문을 사용하여 루프를 끝내고 싶을 때가 종종 있기 때문에 이것은 생각만큼 쓸모가 없을 수도 있습니다.

다음 예를 고려하십시오. 모두 1부터 10까지의 숫자를 표시합니다.

                  
<?php
/* example 1 */

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

/* example 2 */

for ($i = 1; ; $i++) {
    if ($i > 10) {
        break;
    }
    echo $i;
}

/* example 3 */

$i = 1;
for (; ; ) {
    if ($i > 10) {
        break;
    }
    echo $i;
    $i++;
}

/* example 4 */

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
                  
                

물론 첫 번째 예가 가장 좋은 것(또는 아마도 네 번째)인 것처럼 보이지만 for 루프에서 빈 표현식을 사용할 수 있는 것이 많은 경우에 유용하다는 것을 알게 될 것입니다.

PHP는 for 루프에 대한 대체 "콜론 구문"도 지원합니다.

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

아래 예와 같이 배열을 반복하는 것은 많은 사용자에게 흔한 일입니다.

                  
<?php
/*
 * This is an array with some data we want to modify
 * when running through the for loop.
 */
$people = array(
    array('name' => 'Kalle', 'salt' => 856412),
    array('name' => 'Pierre', 'salt' => 215863)
);

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

위의 코드는 모든 반복에서 배열 크기를 가져오기 때문에 느릴 수 있습니다. 크기가 절대 변경되지 않기 때문에 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(000000, 999999);
}
?>