for


for 반복문은 대부분의 언어에서 가장 기본적이고 많이 사용하는 반복 문법입니다. for 키워드를 이용한 반복문은 C 언어 스타일로 고급 언어에서는 대부분 적용이 가능한 문법 구조입니다. PHP에서도 대중적인 반복 문법인 for문을 제공합니다.

다음은 for 반복 문법의 기존 구조 표현입니다.

다중 반복 문법

<?php

for (초기값 설정; 조건; 증가 연산자) {

   반복되는 수행문 1;
   반복되는 수행문 2;

}

?>

for 문법은 for 키워드와 중괄호의 조건 블록과 대괄호의 반복 수행 코드로 작성합니다. 조건 블록은 세 개의 인자값이 세미콜론(;)으로 구분하여 입력됩니다. 또한 반복되는 수행은 중괄호 { }를 이용하여 실행할 코드의 블록을 지정할 수 있습니다.

만일 반복되는 수행문이 한 개일 때는 다음과 같이 중괄호 { }를 생략할 수 있습니다.

단일 반복 문법

<?php

for (초기값 설정; 조건; 증가 연산자) 반복되는 수행문;

?>

for 반복 문법은 조건 블록은 세 개의 조건 인자값이 필요합니다. 첫 번째는 초기값, 두 번째는 반복 조건, 세 번째는 증가 연산자입니다. 첫 번째 초기값과 증가 연산자는 생략할 수도 있지만 두 번째 반복 조건은 생략할 수 없습니다.


초기값


반복 문법 for문장은 중괄호로 묶여 있는 반복 코드 블록을 지정한 수만큼 반복 수행합니다. 만일 우리가 다섯 번의 반복 수행을 한다고 할 때 사람들은 추상적으로 다섯 번을 쉽게 이해할 수 있습니다. 하지만 1회, 2회, 3회, 4회, 5회 등 횟수를 카운트하기 위해서는 초기의 시작하는 값이 필요합니다. 1부터 다섯 번을 세어 5까지 셀 수도 있고, 3부터 다섯 번을 세어 7까지도 셀 수도 있습니다. 그러므로 반복문을 실행하기 위해서는 반복 횟수를 카운트를 하기 위한 초기값을 반드시 필요로 합니다.

반복문에서는 카운트를 할 때 카운트용으로 사용할 하나의 변수가 필요로 합니다. 즉, 한 번, 두 번, 세 번 등 반복되는 횟수를 저장해야 할 임시변수입니다. 반복문의 초기값이란 이 반복 횟수를 지정하는 변수에 초기값을 지정하는 것입니다.

for ($i=0; 조건; 증가 연산자) 반복되는 수행문;

위의 예는 초기값을 0부터 카운트한다는 표현입니다. 반복문은 초기값이 반드시 필요하지만 꼭 for 반복 조건문 안에 써야 하는 것은 아닙니다. for 반복 조건문의 첫 번째 인자인 초기값은 생략도 가능합니다.

$i=1;
for (; 조건; 증가 연산자) 반복되는 수행문;

위의 예처럼 조건 블록에서는 생략한 경우에는 초기값은 for반복문이 실행되기 이전에 미리 정의해주면 상관 없습니다.

초기값을 외부에서 설정할 때는 외부에서 설정한 값부터 시작해서 카운트합니다. 이러한 외부초기값 설정 방법은 for 반복문을 동적으로 수행하거나, 하나의 반복문을 나누어 실행할 수 있는 테크닉으로 사용할 수 있습니다.

for ($i=0; $i<5; $i++) 반복되는 수행문1;
for (;$i<10; $i++) 반복되는 수행문2;

위의 예는 두 개의 반복문을 연결하는 예입니다. 첫 번째 반복문은 초기값을 0으로 시작해서 수행문1을 다섯 번을 실행합니다. 두 번째 반복문은 초기값이 없습니다. 앞에 수행한 반복문의 초기값 임시변수 $i 를 이어서 계속 사용합니다.

따라서 수행문2가 두 번째 반복문을 통해 다섯 번을 실행하고 종료하게 됩니다. 즉, 수행문1 과 수행문 2를 각각 다섯 번씩 동작하게 됩니다.

반복 수행에 필요한 초기값 변수는 하나 이상의 다수의 변수를 한 번에 초기화할 수 있습니다.

for ($i=0, $j=0,  $k=0; 조건; 증가 연산자) 반복되는 수행문;

위의 예는 초기값 변수 $i, $j, $k 세 개를 한 번에 for문에서 초기화할 수 있습니다. 다수의 변수를 초기화 값을 지정하고 싶다면 콤마(,)를 이용하여 구분하면 됩니다.

초기화된 변수는 꼭 반복문 안에서 사용해야만 하는 것은 아닙니다. 다른 처리 로직에서 필요로 하는 변수들도 for 반복 문법을 통해 초기화하여 사용할 수도 있습니다.

for ($i=1,$sum=0;$i<=10;$i++) {
	$sum += $i;
}

위의 예처럼 $sum 한수는 반복 수행에 관련된 변수는 아니지만, 반복 수행 변수의 합계를 구하기 위한 임시변수로 초기화 조건에서 같이 0으로 초기화할 수 있습니다.


증가 연산자


반복문이 여러 번의 코드를 수행할 때 반복 횟수는 어떻게 카운트할까요? 바로 for문의 세 번째 인자값을 증가 연산자 형태를 이용하여 반복을 수행하면서 카운트의 값을 한 번씩 변경합니다. 대부분 반복 수행을 할 때 카운트의 숫자를 1씩 증가를 합니다. 꼭 증가만 하는 것은 아닙니다. 감소할 때는 감소 연산자를 사용하면 됩니다.

for ($i=0; 조건; $i++) 반복되는 수행문;

for ($i=0; 조건; $j--) 반복되는 수행문;

단순한 반복 작업 이라면 증가 연산자를 이용하여 한 번에 1씩 더하거나 빼면서 카운트를 합니다. 하지만 꼭 1씩 써야만 하는 것은 아닙니다. 만일 증가되는 카운트 값이 1이 아닌 값을 처리해야 될 경우,

$i + = 증가  

형태로 바꿔서 값을 변경할 수 있습니다. $i+=2 형태로 쓴다고 하면 짝수 값 형태로 초기값 임시변수의 값이 증가될 것입니다.

초기값 변수가 생략이 가능한 것처럼 증가 연산자 조건도 필요에 따라서 생략이 가능합니다. 대신에 증가 연산자의 값은 반복 수행하는 코드 블록 안에 삽입해야 합니다.

for ($i=0; 조건;) {
	$i++;
반복되는 수행문;
}

본문 안에 증가 연산자를 넣어서 작성하면 반복의 수행 횟수를 반복문 내부에서 제어할 수 있는 장점이 있습니다. 특정 조건 등을 넣어서 일부러 조건 값 이상의 값으로 설정한다면 반복문을 조기에 마치고 탈출할 수도 있을 것입니다.

만일 증가 연산자를 for문 조건 인자값, 본문 코드 블록 모두 사용하지 않으면 프로그램은 for문을 탈출하지 못하고 무한적으로 반복하기 때문에 컴퓨터에 부하를 주거나 프로그램이 동작을 하지 않는 것처럼 보일 수 있습니다.


조건


for 반복 문법의 조건인자는 for문의 소스를 반복하는 조건 횟수를 판별하는 if와 같습니다. 첫 번째 인자의 초기값으로 시작하여, 세 번째 인자의 설정값처럼 증가/감소하면서 반복하다가 두 번째 인자의 조건이 되면 반복문을 종료하게 됩니다.

for ($i=0; $i<5; $i++) 반복되는 수행문;

반복 조건은 등호(=)와 크기를 비교하는 부등호(<, >)와 같은 연산 기호를 사용하여 반복 횟수를 비교할 수 있습니다. 또한 조건이 거짓일 경우에 반복문을 종료하고 다음 소스 코드 실행으로 이동합니다.


반복 플로우


지금까지 배운 for 반복 문법의 조건 블록을 순차적으로 한번 그림으로 정리해 봅니다.

  • ① for 반복문이 실행될 때 사용자가 설정한 초기값을 가지고 옵니다.
  • ② 초기화 변수의 초기값과 조건을 비교합니다
  • ③ 처음 시작 시 초기 조건이 만족하면 { } 블록 코드를 실행합니다.
  • ④ 초기화 변수의 값을 변경합니다.
  • ⑤ 변경된 초기화 변수의 증가 값과 조건을 비교합니다.
  • ③ 증가된 조건이 만족하면 다시 한번 { } 블록 코드를 재실행합니다.
  • ④ 초기화 변수의 증가 값을 변경합니다.
  • ⑤ 변경된 증가 값과 조건을 비교합니다.
  • ⑥ 증가된 조건이 거짓이면 반복문을 종료합니다.


예제


몇 가지 예제를 통하여 for 반복문의 실행과 동작을 숙지하도록 하겠습니다. 반복문은 많이 사용해야만 익숙해지고 쉽게 소스 코드를 이해할 수 있습니다.

예제 파일 for-01.php

<?php
    for ($i = 0; $i < 5; $i++) {
      echo "The number is: $i <br>";
    }
?>

결과

The number is: 0
The number is: 1
The number is: 2
The number is: 3
The number is: 4 

가장 전형적인 for 구문입니다. 첫 번째 인자로 초기화 변수 $i 를 0으로 초기화합니다.
두 번째 인자로 조건 $i가 5보다 작을 때까지 해당 코드가 반복 수행됩니다.
세 번째 인자로 매번 반복될 때마다 임시변수 $i 값을 1씩 증가시킵니다.
이런 세 가지 조건을 통해 본문이 5번 반복되어 내용을 출력합니다.

두 번째 예는 초기값 변수와 증가 연산을 제외한 방법의 예제입니다.

예제 파일 for-02.php

<?php
	// for문 밖에서 초기값을 지정합니다.
	$i=1;

	// for문에서는 초기값. 증가 값 설정 부분을 생략합니다.
	for ( ; $i < 5; ) {
      		echo "The number is: $i <br>";

      		// 한 번 반복할 때마다 1씩 값을 증가합니다.
      		$i++;
	}
?>

결과

The number is: 1
The number is: 2
The number is: 3
The number is: 4 

위의 예제는 초기값을 for문 실행 전에 반복문 상단 밖에 지정합니다. 증가 연산 값은 본문 중괄호 { } 블록 안에 넣은 방법입니다. for 반복 문장은 프로그램에서 반복문의 가장 전형적인 문법이고 표준으로 자리잡고 있습니다. for 반복 문법 하나만 잘 숙지해도 대부분의 언어에서 반복 문법을 쉽게 적용하여 사용할 수 있습니다.