제어 구조 (Control Structures)
로빈아빠
본문
모든 PHP 스크립트는 일련의 구문으로 이루어 진다. 하나의 구문은 대입문이 될 수도 있고, 함수 호출, 반복문, 조건문이 될 수도 있으며 심지어는 아무 내용이 없는 빈 문장일 수도 있다. 한 구문은 일반적으로 세미콜론(;)으로 끝난다. 또한 여러개의 구문을 중괄호({,})를 사용하여 하나의 그룹으로 만들어 사용할 수도 있다. 이 구문-그룹은 그 그룹의 모든 구문들이 하나의 구문인 것처럼 인식된다. 여기서는 여러 가지 구문형태에 대해 알아본다.
--------------------------------------------------------------------------------
if
PHP의 IF문은 C와 비슷하다.
1
2 if (expr)
3 statement
4
expr을 평가하여 TRUE이면 statement를 실행한다. FALSE이면 무시한다.
다음 예제는 $a가 $b보다 크면 "a is bigger than b"를 출력한다.
1
2 if ($a > $b)
3 print "a is bigger than b";
4
여러 문장을 실행시키려면 중괄호( { } )를 사용하여 복문으로 만들면된다. :
1
2 if ($a > $b) {
3 print "a is bigger than b";
4 $b = $a;
5 }
6
--------------------------------------------------------------------------------
else
ELSE는 IF문의 평가식이 FALSE일 경우 실행하는 문장을 지정한다. :
1
2 if ($a > $b) {
3 print "a is bigger than b";
4 } else {
5 print "a is NOT bigger than b";
6 }
7
--------------------------------------------------------------------------------
elseif
ELSEIF는 ELSE와 IF를 합쳐놓은 것과 같다. :
1
2 if ($a > $b) {
3 print "a is bigger than b";
4 } elseif ($a == $b) {
5 print "a is equal to b";
6 } else {
7 print "a is smaller than b";
8 }
9
한 IF문에는 여러개의 ELSEIF문이 있을 수 있다. ELSEIF문은 순서대로 평가하여 TRUE인 곳을 실행한다. 즉, 어떤 ELSEIF문이 실행 되려면 IF문의 평가식과 그 앞의 모든 ELSEIF문의 평가식이 FALSE이어야 한다. 이것은 'else if'라고 두 개의 문장으로 써도 된다(문법적인 의미는 약간 다르지만).
--------------------------------------------------------------------------------
제어구조의 다른 표현 (Alternative syntax for control structures)
PHP 3는 중괄호({ })를 쓰는 대신 IF(expr)뒤에 콜론( : )을 찍고, 하나 이상의 문장을 나열한 후에 ENDIF;로 끝내는 방법을 제공한다. 이 방법은 특히 IF문 안에 HTML 블럭을 삽입하는데 유용하게 사용될 수 있다. 다음 예를 보자. :
1
2 <?php if ($a == 5): ?>
3 A is equal to 5
4 <?php endif; ?>
5
위의 예에서 "A = 5"라는 HTML 블록이 IF문 안에 사용되고 있다. 위의 HTML 블록은 $a가 5일 경우에만 표시된다.
다음과 같이 ELSE와 ELSEIF (expr)도 사용할 수 있다. :
1
2 if ($a == 5):
3 print "a equals 5";
4 print "...";
5 elseif ($a == 6):
6 print "a equals 6";
7 print "!!!";
8 else:
9 print "a is neither 5 nor 6";
10 endif;
11
--------------------------------------------------------------------------------
while
WHILE 루프는 PHP 3의 가장 간단한 형태이다. 이것은 C와 동일하게 작동한다. 기본 형태는 다음과 같다. :
1
2 while (expr) statement
3
IF문과 마찬가지로 다음과 같은 문장 형태로 중괄호( { } )를 사용하지 않는 방법도 있다. :.
1
2 while (expr): statement ... endwhile;
3
다음두개의 예제는 동일한 예제이다. 1부터 10까지 출력한다.:
1
2 /* example 1 */
3
4 $i = 1;
5 while ($i <= 10) {
6 print $i++; /* the printed value would be
7 $i before the increment
8 (post-increment) */
9 }
10
11 /* example 2 */
12
13 $i = 1;
14 while ($i <= 10):
15 print $i;
16 $i++;
17 endwhile;
18
--------------------------------------------------------------------------------
do..while
DO..WHILE 루프는 비교식이 앞이 아닌 맨 뒤에 있다는 점을 제외하면 WHILE 루프와 비슷하다. 따라서 WHILE 조건절은 DO 문장이 실행된 후에 평가되므로, DO 이후의 문장은 무조건 한번은 실행된다.
다음과 같은 DO..WHILE 루프에서도 한번은 출력이 된다. :
1
2 $i = 0;
3 do {
4 print $i;
5 } while ($i>0);
6
--------------------------------------------------------------------------------
for
FOR는 PHP의 가장 복잡한 루프이다. 이것은 C와 유사하다. FOR 루프의 형태는 다음과 같다. :
1
2 for (expr1; expr2; expr3) statement
3
첫 번째 표현식(expr1)은 루프를 시작할 때 무조건 한번 평가(실행)된다.
매 반복의 시작 때마다 expr2가 평가된다. 만약 이것이 TRUE면 루프는 계속되고 statement가 실행된다. expr2가 FALSE이면 루프는 종료된다.
매 반복이 끝날 때 expr3가 평가(실행)된다.
각 평가식은 비워둘 수 있다.expr2가 비어있으면 무한 루프를 뜻한다. (PHP는 C와 같이 비어있으면 TRUE로 인식한다.) 이건 별로 좋은 방법이 아니지만, 종종 BREAK를 사용하여 종료하는 방법도 있다.
다음 예는 1에서 10까지 출력하는 예이다. :
1
2 /* example 1 */
3
4 for ($i = 1; $i <= 10; $i++) {
5 print $i;
6 }
7
8 /* example 2 */
9
10 for ($i = 1;;$i++) {
11 if ($i > 10) {
12 break;
13 }
14 print $i;
15 }
16
17 /* example 3 */
18
19 $i = 1;
20 for (;;) {
21 if ($i > 10) {
22 break;
23 }
24 print $i;
25 $i++;
26 }
27
28 /* example 4 */
29
30 for ($i = 1; $i <= 10; print $i, $i++) ;
31
물론 처음것이 가장 좋아보인다. 그러나 나머지도 가능하다는 것을 알아야 한다.
PHP는 FOR 루프에 대해서도 다음과 같은 "colon syntax"를 지원한다.
1
2 for (expr1; expr2; expr3): statement; ...; endfor;
3
일부 다른 언어들은 배열을 탐색하기 위하여 foreach 문장을 제공하기도 한다. 그러나 PHP는 이를 위해 list()와 each() 함수를 사용하여 while 루프로 해결한다. 이 함수들에 대해서는 예제를 참조하자.
출처 : http://qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=43
--------------------------------------------------------------------------------
if
PHP의 IF문은 C와 비슷하다.
1
2 if (expr)
3 statement
4
expr을 평가하여 TRUE이면 statement를 실행한다. FALSE이면 무시한다.
다음 예제는 $a가 $b보다 크면 "a is bigger than b"를 출력한다.
1
2 if ($a > $b)
3 print "a is bigger than b";
4
여러 문장을 실행시키려면 중괄호( { } )를 사용하여 복문으로 만들면된다. :
1
2 if ($a > $b) {
3 print "a is bigger than b";
4 $b = $a;
5 }
6
--------------------------------------------------------------------------------
else
ELSE는 IF문의 평가식이 FALSE일 경우 실행하는 문장을 지정한다. :
1
2 if ($a > $b) {
3 print "a is bigger than b";
4 } else {
5 print "a is NOT bigger than b";
6 }
7
--------------------------------------------------------------------------------
elseif
ELSEIF는 ELSE와 IF를 합쳐놓은 것과 같다. :
1
2 if ($a > $b) {
3 print "a is bigger than b";
4 } elseif ($a == $b) {
5 print "a is equal to b";
6 } else {
7 print "a is smaller than b";
8 }
9
한 IF문에는 여러개의 ELSEIF문이 있을 수 있다. ELSEIF문은 순서대로 평가하여 TRUE인 곳을 실행한다. 즉, 어떤 ELSEIF문이 실행 되려면 IF문의 평가식과 그 앞의 모든 ELSEIF문의 평가식이 FALSE이어야 한다. 이것은 'else if'라고 두 개의 문장으로 써도 된다(문법적인 의미는 약간 다르지만).
--------------------------------------------------------------------------------
제어구조의 다른 표현 (Alternative syntax for control structures)
PHP 3는 중괄호({ })를 쓰는 대신 IF(expr)뒤에 콜론( : )을 찍고, 하나 이상의 문장을 나열한 후에 ENDIF;로 끝내는 방법을 제공한다. 이 방법은 특히 IF문 안에 HTML 블럭을 삽입하는데 유용하게 사용될 수 있다. 다음 예를 보자. :
1
2 <?php if ($a == 5): ?>
3 A is equal to 5
4 <?php endif; ?>
5
위의 예에서 "A = 5"라는 HTML 블록이 IF문 안에 사용되고 있다. 위의 HTML 블록은 $a가 5일 경우에만 표시된다.
다음과 같이 ELSE와 ELSEIF (expr)도 사용할 수 있다. :
1
2 if ($a == 5):
3 print "a equals 5";
4 print "...";
5 elseif ($a == 6):
6 print "a equals 6";
7 print "!!!";
8 else:
9 print "a is neither 5 nor 6";
10 endif;
11
--------------------------------------------------------------------------------
while
WHILE 루프는 PHP 3의 가장 간단한 형태이다. 이것은 C와 동일하게 작동한다. 기본 형태는 다음과 같다. :
1
2 while (expr) statement
3
IF문과 마찬가지로 다음과 같은 문장 형태로 중괄호( { } )를 사용하지 않는 방법도 있다. :.
1
2 while (expr): statement ... endwhile;
3
다음두개의 예제는 동일한 예제이다. 1부터 10까지 출력한다.:
1
2 /* example 1 */
3
4 $i = 1;
5 while ($i <= 10) {
6 print $i++; /* the printed value would be
7 $i before the increment
8 (post-increment) */
9 }
10
11 /* example 2 */
12
13 $i = 1;
14 while ($i <= 10):
15 print $i;
16 $i++;
17 endwhile;
18
--------------------------------------------------------------------------------
do..while
DO..WHILE 루프는 비교식이 앞이 아닌 맨 뒤에 있다는 점을 제외하면 WHILE 루프와 비슷하다. 따라서 WHILE 조건절은 DO 문장이 실행된 후에 평가되므로, DO 이후의 문장은 무조건 한번은 실행된다.
다음과 같은 DO..WHILE 루프에서도 한번은 출력이 된다. :
1
2 $i = 0;
3 do {
4 print $i;
5 } while ($i>0);
6
--------------------------------------------------------------------------------
for
FOR는 PHP의 가장 복잡한 루프이다. 이것은 C와 유사하다. FOR 루프의 형태는 다음과 같다. :
1
2 for (expr1; expr2; expr3) statement
3
첫 번째 표현식(expr1)은 루프를 시작할 때 무조건 한번 평가(실행)된다.
매 반복의 시작 때마다 expr2가 평가된다. 만약 이것이 TRUE면 루프는 계속되고 statement가 실행된다. expr2가 FALSE이면 루프는 종료된다.
매 반복이 끝날 때 expr3가 평가(실행)된다.
각 평가식은 비워둘 수 있다.expr2가 비어있으면 무한 루프를 뜻한다. (PHP는 C와 같이 비어있으면 TRUE로 인식한다.) 이건 별로 좋은 방법이 아니지만, 종종 BREAK를 사용하여 종료하는 방법도 있다.
다음 예는 1에서 10까지 출력하는 예이다. :
1
2 /* example 1 */
3
4 for ($i = 1; $i <= 10; $i++) {
5 print $i;
6 }
7
8 /* example 2 */
9
10 for ($i = 1;;$i++) {
11 if ($i > 10) {
12 break;
13 }
14 print $i;
15 }
16
17 /* example 3 */
18
19 $i = 1;
20 for (;;) {
21 if ($i > 10) {
22 break;
23 }
24 print $i;
25 $i++;
26 }
27
28 /* example 4 */
29
30 for ($i = 1; $i <= 10; print $i, $i++) ;
31
물론 처음것이 가장 좋아보인다. 그러나 나머지도 가능하다는 것을 알아야 한다.
PHP는 FOR 루프에 대해서도 다음과 같은 "colon syntax"를 지원한다.
1
2 for (expr1; expr2; expr3): statement; ...; endfor;
3
일부 다른 언어들은 배열을 탐색하기 위하여 foreach 문장을 제공하기도 한다. 그러나 PHP는 이를 위해 list()와 each() 함수를 사용하여 while 루프로 해결한다. 이 함수들에 대해서는 예제를 참조하자.
출처 : http://qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=43
관련링크
댓글목록
등록된 댓글이 없습니다.