for 문은 while과 같은 루프입니다. for 구문은 다음과 같은 형식을 가집니다.
for (expr1; expr2; expr3) statement
for문의 동작 순서는 다음과 같습니다. expr1 이 무조건 한번 실행된 후에 expr2 조건을 검사합니다. expr2가 참이면 statement를 실행하고 statement가 모두 실행되면 expr3를 실행합니다. 만약 expr2가 거짓이라면 더 이상 statement를 실행하지 않고 for문을 빠져나옵니다. ( 뭔말인지 모르시겠죠? ^^;;;; )
소스를 보시면 쉽게 이해하실 수 있을 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 |
<?
/* 아래는 모두 1 부터 10까지 출력하는 프로그램입니다.
그 차이를 한번씩 생각해 보세요..
가장 일반적인 방법은 첫번째 방법입니다.
*/
for ($i=1; $i <=10; $i++) {
echo $i;
}
for ($i = 1;;$i++) {
if ($i >10 ) {
break; // 루프를 빠져나감
}
echo $i;
}
$i=1;
for (;;) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
for ( $i = 1; $i <= 10; print $i,$i++ ) ;
//print는 되는데.. echo는 안되네요...
?> |
나머지 세 방법은 이렇게도 할 수 있구나 하는 것 정도만 이해하시면 됩니다.
break 문은 위에서 배운 for 와 앞서 배운 while 같은 루프를 빠져나오는 명령입니다. 위의 소스에서 보듯이 (14번째줄) 변수 $i가 10보다 커지면.. break에 의해 for 문을 빠져나오게 됩니다. ( switch 문을 벗어날 때도 break를 씁니다.아래에서 배움)
continue는 break와 달리 루프의 처음으로 돌려 보내는 명령입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?
$i = 0;
while ($i++ < 3) { //세번만 실행해보도록 하겠습니다.
echo "첫번째 루프<br>\n";
while (1) {
echo " 두번째 루프<br>\n";
while (1) {
echo " 세번째 루프<br>\n";
continue 3;
}
echo "절대 안나오지롱~<br>\n";
}
echo "나도 나오게 해줘 제발~ ㅜㅜ<br>\n";
}
?> |
위 소스에서 보듯이 (9째줄) continue 다음에 숫자 옵션을 추가하여 루프를 몇 단계 벗어날지도 설정할 수 있습니다. 세단계 루프를 벗어나니까.. 11번째줄과 13번째줄은 절대 프린트가 안되겠죠? ^^
다음은 switch 문을 if 문으로 표현한 것입니다. 소스를 보시면 쉽게 이해되실거예요^^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 |
<?
if ($i == 0) {
print "i 는 0";
}
if ($i == 1) {
print "i 는 1";
}
if ($i == 2) {
print "i 는 2";
}
//위의 if 구문과 아래 switch문은 같습니다.
switch ($i) {
case 0:
print "i 는 0";
break;
case 1:
print "i 는 1";
break;
case 2:
print "i 는 2";
break;
}
?> |
위 소스에서 보듯이 switch 문은 if 문을 여러 개 정렬해놓은 것과 같습니다. 예를 들면 90점은 A 80점은 B 70은 C 같이 등급을 매길 때 유용하게 쓸 수 있습니다. 근데.. 50점 이하는 모두 F를 주고 싶은데.. 귀찮게 50 40 30 .. 모두 case를 만들기가 그렇죠? 이럴 때 default를 쓰면 됩니다. case로 지정안된 모든 값은 default 값으로 정해지는 거죠. case 처럼 default : 이렇게 쓰면 되구요.. break는 쓸 필요가 없습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?
if ($i == 0) {
print "i 는 0";
}
elseif ($i == 1) {
print "i 는 1";
}
elseif ($i == 2) {
print "i 는 2";
}
else {
print "i는 0,1,2가 아니다";
}
switch ($i) {
case 0:
print "i 는 0";
break;
case 1:
print "i 는 1";
break;
case 2:
print "i 는 2";
break;
default :
print "i는 0,1,2 가 아니다";
}
?> |
if 구문과 비교하면서 잘 생각해 보세요..^^