이중 for문
이중 for문은 for문 안에 다시 for문이 들어가는 구조입니다. 이중 for문의 원리를 파악하기 위해 다음의 예제를 살펴봅시다.
03/ex3-19.php
<?php
for ($i = 1; $i <= 5; $i++) { // 02
echo $i."행: ";
for ($j = 1; $j <= 10; $j++) {
echo $j." ";
}
echo "<br>";
} // 08
?>

02~08
for ($i = 1; $i <= 5; $i++) {
...
}
$i는 1에서 5까지의 값(1, 2, 3, 4, 5)을 가지고 반복 루프가 진행되는 동안 3~7행의 문장이 실행됩니다.
echo $i. "행 : ";
각 행의 제일 앞에 1행 : , 2행 : , ...을 출력합니다.
04~06
for ($j = 1; $j <= 10; $j++) {
echo $j." ";
}
디음 실행 결과에 나타난 것과 같이 각 줄에 1 2 3 ... 10을 출력합니다. for문에 있는 각각의 $i의 값에 대해 내부 for문의 실행됩니다.
구구단표 만들기
이중 for문을 이용하여 2단~9단까지의 구구단을 출력하는 프로그램을 작성해봅시다.
03/ex3-20.php
<?php
for ($i = 2; $i <= 9; $i++) { // 02
echo $i."단 : ";
for ($j = 1; $j <= 9; $j++) { // 04
$x = $i * $j;
echo $i."x".$j."=".$x." ";
} // 07
echo "<br>";
} // 09
?>

02~09
for ($i = 2; $i <= 9; $i++) {
...
}
$i 는 2에서 9까지의 값(2, 3, 4, ... 9)을 가지고 반복 루프가 진행되는 동안 3행에서 8행의 문장을 살행합니다. 여기서는 $i는 구구단의 각 단을 의미합니다.
04~07
for ($j = 1; $j <= 9; $j++) {
$x = $i * $j;
echo $i."x".$j."=".$x." ";
}
$i가 2일 때에는 디음 실행 결과의 첫 번째 줄에 나타난 것과 같이 2X1=2 2X2=4 2x9=18을 출력합니다. $i가 2일 때에는 실행 결과 두 번째 줄에서와 같이 2x1=2 2x2=4 2x3=6 2x4=8 ... 2x9=18을 출력합니다.
이와 같은 방법으로 $i가 3에서 9까지의 값을 가질 때 각 단에 해당하는 구구단을 화면에 출력합니다.
이번에는 위 예제를 조금 수정하여 다음 실행 결과와 같이 구구단을 표 형태로 출력하는 프로그램을 작성해봅시다.
03/ex3-21.php
<?php
$string = ""; // 02
$string .= "<table border='1'>";
for ($i = 2; $i <= 9; $i++) {
$string .= "<tr>";
for ($j = 1; $j <= 9; $j++) {
$x = $i * $j;
$string .= "<td>".$i."x".$j."=".$x."</td>";
}
$string .= "</tr>";
}
$string .= "</table>";
echo $string; // 14
?>

02 $string = "";
문자열 $string을 빈 문자열 널("")로 초기화합니다.
3행, 5행, 8헹, 10행, 12행에서 할당 연산자 .=을 이용하여 널로 초기화된 문자열 $string에 구구단표로 출력할 내용을 추가해 나갑니다. 여기서 표 형태로 구구단표를 만들기 위해 <table>, <tr>, <td> 태그가 사용되었습니다.
14 echo $string;
$string에는 출력할 내용이 모두 들어가있습니다. echo문을 이용하여 실행결과에서와 같이 구구단표를 출력합니다.
숫자로 삼각형 형태 출력하기
이름 for문을 좀 더 연습해보기 위해 다음과 같이 숫자를 삼각형 형태로 출력하는 프로그램을 살펴봅시다.
03/ex3-22.php
<?php
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= $i; $j++) { // 03
echo $i;
} // 05
echo "<br>";
}
?>

03~05
for ($j = 1; $j <= $i; $j++) {
echo $i;
}
여기 $j는 1에서 $i까지의 값(1씩 증가)을 가집니다. 2행의 for 루프에서 $i가 1일 때, 내부 for 루프에서 3행의 조건식은 $j <= 1이기 때문에 $j는 $i가 1일 때만 조건식이 참이 됩니다.
따라서 실행 결과에서의 첫 번째 줄에서와 같이 1 하나가 화면에 출력됩니다.
2행의 for 루프에서 $i가 2일 때는 내부 for 루프의 조건식은 $j<=2가 되기 때문에 $j는 1부터 2까지 반복되며,즉 4행의 문징이 두 번 실행됩니다. 따라서 실행 결과에서와 같이 2가 두 개 출력됩니다.
이와 같은 방법으로 다음 실행 결과에서와 같이 삼각형 형태의 숫자를 출력할 수 있습니다.
이번에는 다음 실행 결과에서와 같이 숫자를 역삼각형 형태로 출력하는 프로그램을 작성해봅시다.
03/ex3-23.php
<?php
for ($i = 9; $i >= 1; $i--) { // 02
for ($j = 1; $j <= $i; $j++) { // 03
echo $i;
} // 05
echo "<br>";
} // 07
?>

02~07
for ($i = 9; $i >= 1; $i--) {
...
}
$i는 9부터 1까지의 값(9, 8, 7, ..., 1)을 가지고 반복 루프가 진행됩니다. $i--는 $i의 값을 1씩 감소시킵니다.
03~05
for ($j = 1; $j <= $i; $j++) {
echo $i;
}
$j는 1에서 $i까지의 값(1씩 증가)을 가집니다. 2행의 for 루프에서 $i가 9일 때, 내부 for 루프에서 3행의 조건식 $j <= 9이 되기 때문에 $j는 1부터 9까지 반복되며, 즉 4행의 문장이 아홉 번 실행됩니다. 따라서 실행결과의 첫 번째 줄에 나타난 것과 같이 아홉 개의 숫자 9가 출력됩니다.
이와 같은 방법으로 실행 결과에 나타난 것과 같이 숫자로 역삼각형 형태로 출력할 수 있습니다.
별표(*)로 삼각형 형태 출력하기
이번에는 별표(*)로 삼각형을 만드는 다음의 프로그램을 살펴봅시다.
03/ex3-24.php
<?php
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= 9 - $i; $j++) { // 03
echo " ";
} // 05
for ($j = 1; $j <= $i; $j++) { // 06
echo "*";
} // 08
echo "<br>";
}
?>

03~05
for ($j = 1; $j <= 9 - $i; $j++) {
echo " ";
}
각 줄에서 공백을 출력합니다. 공백을 나타내는 특수 문자( )를 9-$i번 출력합니다.
2행의 for문에서 $i가 1이면, 3행의 조건식 $i는 9-1, 즉 8이 됩니다. 따라서 조건식은 $j <= 8이 됩니다. 3행~5행의 내부 for 문애서 $j는 1에서 8까지의 값(1, 2, 3, ..., 8)을 가지고 반복 루프가 8번 실행됩니다. 4행에 의해 실행 결과애서와 같이 공백을 8개 출력합니다. 이와 같은 방법으로 각 줄의 별(*) 앞에 공백을 출력할 수 있습니다.
06~08
for ($j = 1; $j <= $i; $j++) {
echo "*";
}
각 줄에서 공백 다음에 있는 별표(*)를 출력합니다. 반복 루프가 $j는 1부터 $i의 까지의 값(1씩 증가)을 가집니다. 예를 을어 $i가 5이면 값을 가지기 때문에 *가 5개 찍힙니다.
이와 같은 방법으로 다음 실행결과에서와 같은 형태로 별표(*)를 출력할 수 있습니다.
'프로그래밍 언어 > PHP' 카테고리의 다른 글
| 사용자 함수 (0) | 2026.05.14 |
|---|---|
| 내장 함수 (0) | 2026.05.13 |
| 섭씨/화씨 환산표 만들기 (0) | 2026.05.09 |
| for문으로 정수 합계 구하기 (0) | 2026.05.09 |
| for문 (0) | 2026.05.08 |