php 입문 | 제어 구문 | if 문에 의한 조건 분기


값과 변수의 기본이 알았으니, 이어서 “제어 구문"을 배워보자. 제어 구문은 프로그램의 흐름을 제어하기위한 구문이다.

프로그램이라는 것은 단지 써져 있는 문장을 처음부터 끝까지 순서대로 실행해서 끝나는 것이 아니다. 필요에 따라 수행할 작업을 바꾸거나, 여러번 원하는 만큼 처리를 반복하여 동작하는 것이다. 그러한 “어떻게 문장을 실행해 나갈 것인가"를 필요에 따라 제어하기 위한 구문이 제어 구문이다.

제어 구문에는 몇 가지 종류가 있다. 우선 가장 중요한 “if"문부터 설명하겠다.

if 문은 조건에 따라 양자 택일의 형태로 작업을 수행하기위한 것이다. 이것은 다음과 같은 형태로 작성한다.

1. 조건이 맞으면 처리를 실행한다.

if (조건) {
    ...... 조건이 맞는 경우에 처리 ......
}

중괄호 대신 콜론(:)과 endif를 이용할 수도 있다.

if (조건 ):
    ...... 조건이 맞는 경우에 처리 ......
endif;

2. 조건이 맞는지 아닌지에 다른 작업을 수행한다.

if (조건) {
    ...... 조건이 맞는 경우에 처리 ......
} else {
    ...... 조건이 잘못된 경우에 처리 ......
}

중괄호 대신 콜론(:)과 endif를 이용할 수도 있다.

if (조건 ):
    ...... 조건이 맞는 경우에 처리 ......
else:
    ...... 조건이 잘못된 경우에 처리 ......
endif;

3. 여러 조건으로 다른 작업을 수행한다.

if (조건1) {
    ...... 조건이 맞는 경우에 처리 ......
} elseif(조건2) {
    ...... 조건2이 맞는 경우에 처리 ......

...... 필요한 만큼 elseif가 계속 ......    
    
} else {
    ...... 모든 조건이 잘못된 경우에 처리 ......
}

중괄호 대신 콜론(:)과 endif를 이용할 수도 있다.

if (조건1 ):
    ...... 조건1이 맞는 경우에 처리 ......
elseif (조건2):
    ...... 조건2이 맞는 경우에 처리 ......
    
...... 필요한 만큼 elseif가 계속 ......   
    
else:
    ...... 모든 조건이 잘못된 경우에 처리 ......
endif;

if는 ()부분에 “조건"을 설정한다. 조건이라고 하면 이해하기 어려울 수 있다. 이는 “옳고 그른지?“라는 형태로 나타낼 수 있는 식이나 값이라고 생각하면 된다.

컴퓨터의 세계에서는, 예를 들면 “변수 a의 값이 0인가?”, “A의 값은 B보다 큰가” 등으로 값이나 변수를 확인하여 그 수식이 옳고 그른지에 따라 다른 처리를 실행시키거나 한다. 이것이 if의 “조건"이다.

이 조건의 () 다음에 수행할 작업을 작성한다. 한 문장 밖에 없을 때는 그대로 문장을 쓰고 되지만, 여러 문장을 작성하여 실행하고 싶을 경우에는 {}라는 기호를 둘려 쌓고 그 가운데 실행 문장을 작성한다.이렇게 함으로써 “여기에서 여기까지가 수행하는 작업"이라는 것을 명확히 할 수 있다. (이 {} 부분을 “블록(block)“이라고 한다.)

만약 잘못된 경우에는 다른 작업을 실행시키고자 하는 할 시에는, 옳은 조건의 경우에 수행할 작업 후에 “else"가 오고 잘못된 경우의 처리를 작성한다. 이것도 한문장이라면 바로 작성하겠지만, 여러 문장이라면 {} 기호를 붙여 블록으로 감싸준다.

여러 조건이 있이 있는 경우에는 “elseif"를 이용해서 다른 조건을 넣을 수도 있다. elseif는 여러 번 사용할 수 있다. else는 필수가 아니므로 사용하지 않아도 된다.

아래 목록에 간단한 예제를 보도록 하자.

<?php
    $num = 12345;
    $namoji = $num % 2;
?>
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <div>
            <?php
                if ($namoji == 0) {
                    echo "{$num}는 짝수입니다.";
                } else {
                    echo "{$num}는 홀수입니다.";
                }
            ?>
        </div>
    </body>
</html>

여기에서는 변수 $num의 값이 짝수인지 홀수인지를 판단하여 표시하고 있다. 짝수인지 홀수인지는 그 숫자를 2로 나누어, 나머지가 0인지 여부로 알 수 있다. $namoji = $num % 2;와 같이 나머지를 구해서, if문에서 그것이 0인가에 여부에 따라 표시 내용을 변경하고 있다.

부울과 비교

그런데 지금의 예제 if에서 사용된 조건식 좀 익숙치 않을 것이다.

if ($namoji == 0) {...... 중략 ......}

등호가 2개 줄선 “==“라고 하는 기호가 사용되고 있다. 이것은 “비교 연산자"라는 것으로, 우변과 좌변의 값을 비교위한 기호이다. 이 비교 연산자에 다음과 같다.

수식 설명
A == B A와 B는 동일하다.
A != B A와 B는 다르다 (A <> B로도 사용할 수 있다)
A > B A가 B보다 크다.
A >= B A와 B는 A가 크거나 동일하다
A < B A는 B보다 작다
A <= B A와 B는 A가 작거나 동일하다

이러한 기호를 사용한 표현은 “그 표현이 맞는지"를 나타내는데 사용된다. 여기에서는 if ($namoji == 0)이 있었다. 이는 $namoji가 0과 동일한지(즉, $namoji가 0인가?)를 점검하고 그것이 맞다면(즉, 0이라면), 그 후에 처리를 수행한다.

컴퓨터에서는 이렇게 올바른지에 대해 나타내는 경우가 많다. 이러한 “올바른 여부를 나타내는 양자 택일의 상태"를 나타내는데 사용할 수 있는 것이 “부울"라는 값이다.

이는 “true"또는 “false"라는 예약어로 표시된다. 예를 들어 “A == B가 맞다"라고 할 때 “true"이고, 아닌 경우에는 “false"라고 한다. 여기에 올린 비교 연산자도 두 값을 확인하고, true나 false를 반환한다.

즉, if 조건은 “부울로 나타나는 것"이라는 것이다. () 조건식이 true라면 그 실행한다는 구조로 되어 있다.

이 논리 값이라는 것은 프로그래밍에서 매우 자주 등장한다. 조건 연산자와 같은 것을 사용할 수도 있고, 일반적으로 변수 등으로 사용할 수도 있다. 이를테면 “양자 택일의 값"이 필요한 경우는 대부분 이 진리 값이 사용되는 것이라고 생각해도 좋을 것이다.

숫자나 텍스트와 다르게 프로그래밍에 익숙하지 않은 경우, 별로 들어 본 적이 없는 값일 것이다. 지금 단계에서 꼭 기억해 두도록 하자!