if
제어구조
제어구조는 PHP의 흐름을 제어하는 구조입니다.
즉, 위에서 아래로 실행되는 흐름에서 다시 위로 올라가게 한다거나 아니면
어느 부분을 건너뛴다거나 하는 흐름을 제어하는 것입니다.
if
if는 영어로 ‘만약 ~하면’이란 뜻입니다. PHP에서도 마찬가지로 if 문은 ‘만약 A와 B가 같으면, C에 1을 더하라.’와 같은 용도로 사용됩니다. if 문이 어떤 형태를 보이는지 알아봅시다.
if (표현식)
명령문
표현식에는 주로 참이나 거짓으로 판단할 수 있는 수식이 사용되며 만약 표현식 부분이 참이라면 다음 명령문을 실행합니다. 반면에 표현식이 참이 아니라 거짓이라면 명령문은 처리되지 않습니다. 그래서 if 문은 어떤 조건을 판단하여 코드를 수행할 것인지 그렇지 않을 것인지를 결정하는 데 사용합니다. 예를 통해서 자세히 알아봅시다.
<?php
$a = 3;
$b = 1;
if ($a > $b)
echo "$a 은(는) $b 보다 크다.";
위의 예제는 두 변수의 값을 비교하여 변수 $a의 값이 $b의 값보다 더 크면 뒤따르는 echo 문을 실행합니다. 이 경우 변수 $a가 $b보다 크므로 결과는 다음과 같이 출력됩니다.
3 은(는) 1 보다 크다.
만약 변수 $a = 1이고 $b = 3이었다면 어떤 말도 출력되지 않을 것입니다. 위의 예제에서는 하나의 echo 문만을 수행하였습니다. 그러나 많은 경우에서 하나 이상의 구문을 수행해야 할 경우가 있습니다. 지금 우리가 아는 지식으로는 어떤 조건에 따라 두 개의 구문을 수행하려면 if 문을 두 번 사용해야 합니다.
if ($a > $b)
echo "$a 은 (는) $b 보다 크다.";
if ($a > $b)
echo "$a 와 (과) $b 의 차는 " . ($a - $b) . " 이다.";
그러나 두 개의 구문이 아니라 10개 혹은 100개의 구문이라면 위와 같은 방식으로는 한계가 있습니다. 또한 한 번 비교했던 표현식($a > $b)을 계속해서 비교하는 것은 어린 아이에게 "1+1은 얼마지?"하고 계속해서 묻는 것과 같습니다. 아마 아무리 착한 아이라도 세 번 이상 물으면 화낼 겁니다. 그래서 PHP에서는 여러 개의 구문을 하나의 그룹으로 묶어 주는 기능이 있습니다.
if ($a > $b) {
echo "$a 은 (는) $b 보다 크다.";
echo "$a 와 (과) $b 의 차는 " . ($a - $b) . " 이다.";
}
위의 예처럼 중 괄호로 여러 개의 구문을 하나로 묶어 주면 PHP는 이 묶음을 처리합니다.
else
else 구문은 if 문에서 표현식의 결과가 false이면 즉, 거짓인 경우에 처리될 부분을 정의합니다. 그러므로 else 구문은 if 문 없이 사용할 수 없습니다.
<?php
$a = 3;
$b = 5;
if ($a > $b)
echo "$a 은(는) $b 보다 크다.";
else
echo "$a 은(는) $b 보다 작다.";
else 구문을 이용하면 if 구문의 표현식이 참인 경우와 거짓인 경우 모두를 처리할 수 있습니다. 따라서 이 예제의 결과는 다음과 같이 출력됩니다.
3 은(는) 5 보다 작다.
만약 $a와 $b가 모두 3과 같이 같은 값이라면 어떻게 될까요?
if 문에서 3 > 3 인지 확인하고 결과는 false가 됩니다. 그러면 당연히 else 구문이 실행되겠지요. 그러면 결과는 다음과 같이 나오게 될 것입니다.
3 은(는) 3 보다 작다.
흠... 틀린 결과가 되어버리네요. 두 값이 같다는 걸 출력하려면 어떻게 해야 될까요? 바로 방법은 if-else 구문을 한 번 더 쓰는 겁니다.
if-else 구문 속에는 다시 if-else 구문이 들어갈 수 있습니다. 이를 통해서 다단계에 걸친 조건문 판단이 가능하고 여러 가지 경우에서 특정 조건에 맞는 코드를 수행할 수 있게 됩니다.
<?php
$a = 3;
$b = 3;
if ($a > $b)
echo "$a 은(는) $b 보다 크다.";
else {
if ($a == $b)
echo "$a 은(는) $b 과(와) 같다.";
else
echo "$a 은(는) $b 보다 작다.";
}
3 은(는) 3 과(와) 같다.
참고
위의 코드는 올바르며 그 결과도 올바릅니다. 하지만 일반적으로 다음과 같이 코드를 수정하는 것이 좋습니다. 반드시 따라야하는 것은 아니지만 if, else 구문 둘 중 하나라도 중괄호로 묶이게되면 둘 모두 중괄호를 쓰는게 일반적입니다.
<?php
$a = 3;
$b = 3;
if ($a > $b) {
echo "$a 은(는) $b 보다 크다.";
} else {
if ($a == $b)
echo "$a 은(는) $b 과(와) 같다.";
else
echo "$a 은(는) $b 보다 작다.";
}
elseif
elseif 구문은 else와 if를 합쳐놓은 것과 같습니다. 위에서 else 구문안에 또다시 if 구문이 나오는 경우를 아래와 같이 줄여서 쓸 수 있습니다.
<?php
$a = 3;
$b = 3;
if ($a > $b) {
echo "$a 은(는) $b 보다 크다.";
} else if ($a == $b) {
echo "$a 은(는) $b 과(와) 같다.";
} else {
echo "$a 은(는) $b 보다 작다.";
}
순서대로 if 문에서 부터 표현식이 true인지 확인하고 만약 false라면 다음 elseif 구문의 표현식을 확인하고 만약 또 거짓이라면 else 구문이 실행됩니다.
elseif 는 여러개를 쓸 수도 있습니다. 어릴때 기억을 되살려서 성적을 수우미양가로 표현하는 코드를 작성해보면 아래와 같습니다.
<?php
$math = 85;
if ($math >= 90) {
echo "수";
} elseif ($math >= 80 && $math < 90) {
echo "우";
} elseif ($math >= 70 && $math < 80) {
echo "미";
} elseif ($math >= 60 && $math < 70) {
echo "양";
} else {
echo "가";
}