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);
}
?>