다중 반복문


반복문은 여러 소스코드를 묽어 반복처리를 수행합니다. 반복문 또한 소스코드 이기 때문에 다른 반복문의 반복 수행되는 코드가 될 수 있습니다. 다중 반복문이란 하나의 반복문이 또 다른 반복문을 포함하는 형태를 말합니다.
그림으로 이중 반복문을 표현하면 다음과 같습니다.

반복문의 중복의 횟수는 제한이 없습니다. 반복문이 중첩이 될수록 반복문1 x 반복문2 x 반복문3 곱샘 형태로 수행의 횟수는 증가합니다.

다중 반복문을 작성할 때는 각각의 반복문의 초기화 임시변수에 대해서 신경을 많이 써야 합니다. 대부분 다중 반복문 각각의 서로 다른 초기화 변수명을 사용합니다. 만일 초기화 변수값이 같다면 서로 영향을 미쳐서 생각 이외의 결과가 출력될 수 있습니다.


일차원 반복


일반적으로 기존 한 개의 반복문은 일차원적인 반복을 처리합니다. 이를 일차원 반복문이라고 합니다.

예를 들어 “헬스장에서 코치가 윗몸 일으키기 50번 하세요”라고 한다면 윗몸 일으키기라는 코드를 50번 수행하게 되는 것입니다.

예제 파일 for-03.php

<?php
	for ($i = 0; $i < 50; $i++) {
		echo "윗몸 일으키기<br>";
	}
?>

결과

윗몸 일으키기
윗몸 일으키기
윗몸 일으키기
...
윗몸 일으키기
윗몸 일으키기
윗몸 일으키기
윗몸 일으키기


이차원 반복


이차원 반복문이란 반복문이 또 다른 반복문을 하나 더 가지고 있는 경우를 말합니다. 아래 작성 문법처럼 for반복문 안에 또 다른 for 반복문이 포함되어 있습니다.

|문법|

<?php
// 1차 반복문
for (초기값 설정; 조건; 증가 연산자) {
  
  // 2차 반복문
  for (초기값 설정; 조건; 증가 연산자) {
  }

}

?>

“헬스장에서 코치가 윗몸 일으키기 10번씩하고 1분 쉬고 다시 10번씩 하는 동작을 5번 하세요”라고 했을 때 총 수행하는 동작은 10번*5세트=50번 하는 것과 동일하지만, 중간에 휴식이 있기 때문에 하나의 반복문으로는 처리할 수 없습니다.

이런 경우 이중 반복문을 이용하여 10번의 윗몸 일으키기 반복문을 또 다시 5번을 수행을 하면 됩니다.

예제 파일 for-04.php

<?php
	// 반복 루프1
	for ($i = 0; $i < 5; $i++) {
		echo "세트$i 시작 <br>";

		// 반복 루프2
		for ($j = 0; $j < 10; $j++) {
			echo "윗몸 일으키기<br>";
		}

		echo "=== 휴식 10분 === <br>";
	}

?>

결과

세트0 시작
윗몸 일으키기
...
윗몸 일으키기
=== 휴식 10분 ===
세트1 시작
윗몸 일으키기
...
윗몸 일으키기
=== 휴식 10분 ===
세트2 시작
윗몸 일으키기
...
윗몸 일으키기
=== 휴식 10분 ===
세트3 시작
윗몸 일으키기
...
윗몸 일으키기
=== 휴식 10분 ===
세트4 시작
윗몸 일으키기
...
윗몸 일으키기
=== 휴식 10분 === 

이처럼 반복문 안에 또 다른 반복문을 넣어 작성할 수 있습니다. 이때 주의해야 할 점은 1차 반복문에서 사용하는 제어변수와 2차 반복문에서 사용하는 제어변수는 달라야 합니다.

만일 값이 같으면 앞에서 1차 반복문에서 증가 연산 값과 2차 반복문의 증가 연산 값이 이중으로 작동하기 때문에 정상적인 결과 값이 출력되지 않습니다.

이중 반복문은 다차원 배열 등의 값을 처리하는 데 매우 유용합니다. 다차원 배열은 하나의 배열 각각의 값에 또 다른 배열을 포함하고 있기 때문에 $arr[][] 2개 이상의 인자값이 필요합니다.

예제 파일) for-05.php

<?php
	$cars = array(
		array("Volvo",10,300),
		array("BMW",11,250),
		array("Saab",12,350),
		array("kia",13,200)
	);

	for ($i = 0; $i < 4; $i++) {

		for ($j = 0; $j < 3; $j++) {
			echo $cars[ $i ][ $j ];
			echo " ";
		}

		echo "<br>";
	}

?>

결과

Volvo 10 300
BMW 11 250
Saab 12 350
kia 13 200 

다음은 이중 반복문을 이용하여 삼각형 별을 만드는 전형적인 예제입니다.

예제 파일 for-06.php

<?php
	for ($i=0;$i<5;$i++) {
		for ($j=0;$j<$i;$j++) {
			echo "*";
		}
		echo "<br>";
	}
?>

결과

*
**
***
****

다음 예제는 이중 반복문을 통해 정삼각형 별을 만드는 전형적인 예제입니다.

예제 파일 for-07.php

<?php
	for ($i=0;$i<5;$i++) {
		for ($j=4; $j>$i-1;$j--) {
			echo "_";
		}

		for ($k=1; $k<$i+1;$k++) {
			echo "*";
		}

		for ($m=1; $m<$i;$m++) {
			echo "*";
		}

		echo "<br>";
	}
?>

결과

_____
____*
___***
__*****
_*******


다차원 반복


반복문은 이중 반복문 외 더 많은 반복문을 포함할 수 있습니다. 즉 이차원, 삼차원, 사차원… 등 계속하여 반복문 삽입이 가능합니다. 이를 다차원 반복문이라고 합니다.