php 입문 | 제어 구문 | while과 do while 문


이어서 “반복"하는 구문을 살펴보자. 반복은 말 그대로 동일한 작업을 여러 번 실행하는 구문이다. 반복문도 여러 종류가 있지만, 가장 쉬운 방법은 “while"를 사용한 구문일 것이다.

1. 먼저 조건을 확인한다.

while (조건) {
    ...... 반복 처리 ......
}

중괄호 대신 콜론(:)과 endwhile을 사용할 수도 있다.

while (조건):
    ...... 반복 처리 ......
endwhile;

2. 마지막으로 조건을 확인한다.

do {
    ...... 반복 처리 ......
} while (조건);

이 구문은 조건을 확인하고 반복을 하거나, 반복 부분을 실행한 후에 조건을 검사하거나 하는 그 2가지의종류가 준비되어 있다. 조건은 if와 마찬가지로, 논리 값(true 또는 false)으로 표시되는 수식이나 값이 설정된다.

아무튼, 일반적으로 “먼저 확인"하는 방법을 사용하는 경우가 많다. 나중에 체크하는 방식은 처음부터 조건이 false인 경우도 반복을 실행해 버리기 때문에 다소 특별한 경우에만 한정되어 사용된다.

이도 간단한 예제를 보도로 하겠다.

<?php
    $num = 1;
    $total = 0;
    while($num <= 100){
        $total += $num;
        $num++;
    }
?>
<!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 echo "합계:" . $total; ?>
        </div>
    </body>
</html>

위 예제는 1~100까지의 정수를 모두 합한 결과를 표시한다. 여기에서는 while ($num <= 100)과 같이 조건을 설정하고 $num의 값이 100이하인 동안에 반복을 계속하도록 하고 있다.

대입 연산자

그리고 수행할 작업은 $total += $ num;라는 계산을 하고 있다. 이는 “$total에 $num더한다"라는 의미이다. 이는 등호(=)처럼 좌변의 변수에 값을 대입하는 “대입 연산자"라는 것이다. 대략 다음과 같은 기호들이 있다.

수식 설명
A += B A에 B를 더하고 A에 대입한다.
A -= B A에서 B를 빼고, A에 대입한다.
A*= B A에 B를 곱하고, A에 대입한다.
A /= B A를 B로 나누고, A에 대입한다.
A %= B A를 B로 나눈 나머지를 A에 대입한다.

이 대입 연산자는 보통 등호(=)에 의한 대입식을 좀 더 쓰기 쉽게 한 것이다. 예를 들어, $ total += $ num; 수식은 $ total = $ total + $ num;와 같은 의미이다. 이를 비교하면 $total += $ num;가 더 깔끔하고 알기 쉽다.

증가 연산자

또한 여기에서는 $ num++;을 실행하고 있다. 이 “++“라는 기호로 1만큼 증가시키는 기능을 한다. 이를 “증가 연산자"라고 한다.

마찬가지로, ‘-‘라는 기호로 “감소 연산자"라는 것도 있다. 이것은 변수의 값을 1만큼 줄이는 기능을 한다.

이들은 “++“와 “–“는 수식에도 포함할 수 있다. 지금의 예라면,

$total += $num++;

이렇게 쓸 수도 있다. 이렇게 하면 2행이 1개의 문장으로 끝난다.

또한 이러한 연산자는 변수 전에도 후에도 쓸 수 있다. 예를 들어, “++$num”, ‘’$num++ ‘와 같은 식으로 작성한다. 이 2개는 동작이 미묘하게 다르므로 주의해야 한다.

변수 전에 연산자를 붙이면 변수가 수식 등에 이용되는 경우 1을 더하거나 뺀 후에 값이 식에서 사용된다. 변수 후에 연산자를 붙이면 먼저 값이 식에서 사용된 후에 1을 더하거나 뺄 수 있다. 즉, 변수를 사용할 때와 1을 더하거나 뺄 때의 타이밍이 차이가 나는 것이다.

 

아무튼, 이를 실제로 여러 번 이용하게 되면 자연스럽게 기억할 수 있을 것이다. 우선은 “이런 기호가 있다"는 것만 머리에 넣어 두자.