프로그램의 순차적인 흐름을 제어해야 할 때 사용하는 명령문을 제어문
프로그램 내에서 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문
if
문조건식의 결과가 참(true)이면 주어진 명령문을 실행하며, 거짓(false)이면 아무것도 실행하지 않는다.
문법
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
$num_01 = 10;
$num_02 = 20;
if ($num_01 == $num_02) {
echo "{$num_01}과 {$num_02}은 같은 수;
}
if ($num_01 < $num_02) {
echo "{$num_01}은 {$num_02}보다 작은 수";
}
if ($num_01 > $num_02) // 실행될 명령문이 한 줄뿐이라면 중괄호({})를 생략할 수 있다.
echo "{$num_01}은 {$num_02}보다 큰 수";
if 문에서 실행될 명령문이 한 줄뿐이라면 중괄호({})를 생략할 수 있다.
else
문if
문과 같이 사용할 수 있는 else
문은 if
문의 조건식 결과가 거짓(false)일 때 주어진 명령문을 실행한다.
문법
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
else {
조건식의 결과가 거짓일 때 실행하고자 하는 명령문;
}
$num_01 = 20;
$num_02 = 20;
if ($num_01 == $num_02) {
echo "{$num_01}과 {$num_02}은 같은 수";
}
else {
if ($num_01 < $num_02)
echo "{$num_01}은 {$num_02}보다 작은 수.";
else // $num_01 > $num_02
echo "{$num_01}은 {$num_02}보다 큰 수";
}
else
문에서도 실행될 명령문이 한 줄뿐이라면 중괄호({})를 생략할 수 있다.
else if
문else if
문은 if
문처럼 조건식을 설정할 수 있으므로, 중첩된 if
문을 좀 더 간결하게 표현할 수 있다.
elseif
와else if
둘 다 사용할 수 있다.
문법
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 명령문;
}
elseif (조건식2) {
조건식2의 결과가 참일 때 실행하고자 하는 명령문;
}
else {
조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 때 실행하고자 하는 명령문;
}
$num_01 = 30;
$num_02 = 20;
if ($num_01 == $num_02) {
echo "{$num_01}과 {$num_02}은 같은 수";
}
elseif ($num_01 < $num_02) {
echo "{$num_01}은 {$num_02}보다 작은 수";
}
else { // $num_01 > $num_02
echo "{$num_01}은 {$num_02}보다 큰 수";
}
else if
문에서도 실행될 명령문이 한 줄뿐이라면 중괄호({}
)를 생략할 수 있다.
if / else 문과 마찬가지로 주어진 조건 값에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문.
switch 문에서는 주어진 조건 값과 case 절의 값을 일치 연산자(===)를 사용하여 엄격하게 비교하지 않고, 동등 연산자(==)를 사용하여 느슨하게 비교한다.
문법
switch (조건 값)
{
case 값1:
조건 값이 값1일 때 실행하고자 하는 명령문;
break;
case 값2:
조건 값이 값2일 때 실행하고자 하는 명령문;
break;
...
default:
해당 case가 없을 때 실행하고자 하는 명령문;
break;
}
default
절은 조건 값이 위에 나열된 어떠한case
절에도 해당하지 않을 때 실행된다.
이 구문은 반드시 존재해야 하는 것은 아니며, 필요할 때만 선언할 수 있다.- 각 case 절 및 default 절은 반드시 break 키워드를 포함하고 있어야 한다.
- break 키워드는 조건 값에 해당하는 case 절이나 default 절이 실행된 뒤에 전체 switch 문을 빠져나가게 해준다.
- default 절의 위치가 반드시 switch 문의 맨 마지막일 필요는 없다.
- break 키워드에 대한 더 자세한 사항은 PHP 기타 제어문 수업에서 확인할 수 있다.
$var = "오렌지";
switch ($var) {
case "귤":
echo "귤";
break;
case "사과":
echo "사과";
break;
case "바나나":
echo "바나나";
break;
default:
echo "처음 보는 과일";
break;
}
$var = "아보카도";
switch ($var) {
case "귤":
case "사과":
case "바나나":
case "아보카도":
echo "여기 있는 과일은 제가 먹어본 과일이다.";
break;
case "파파야":
case "두리안":
case "석가":
echo "여기 있는 과일은 제가 먹어보지 못한 과일이다.";
break;
default:
echo "여기 있는 것은 과일이 아니다.";
break;
}
프로그램 내에서 같은 명령을 일정 횟수만큼 반복하여 수행하는 명령문
프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 반복문은 가장 많이 사용되는 명령문 중 하나
- while 문
- do / while 문
- for 문
- foreach 문
while
문특정 조건을 만족할 때까지 계속 주어진 명령문을 반복해서 실행하는 명령문
문법
while (조건식) {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
}
$i = 0;
while ($i < 5) {
echo ($i++)."<br>";
}
- while 문 내부에 표현식의 결과를 변경하는 명령문이 존재하지 않을 경우 프로그램은 루프를 영원히 반복하게 된다.
- 이것을 무한 루프(infinite loop)에 빠졌다고 하며, 무한 루프에 빠진 프로그램은 영원히 종료되지 않는다.
❗ 무한 루프는 특별히 의도한 경우가 아니라면 반드시 피해야 하는 상황이다.
❗ 따라서 while 문을 작성할 때는 표현식의 결과가 어느 순간에는 거짓(false)을 갖도록 표현식를 변경하는 명령문을 반드시 포함해야 한다.
실행될 명령문이 한 줄뿐이라면 중괄호({})를 생략할 수 있다.
do / while
문먼저 루프를 한 번 실행한 후에 표현식을 검사한다.
즉, do / while 문은 표현식의 결과와 상관없이 무조건 한 번은 루프를 실행합니다.
문법
do {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
} while (조건식);
$i = 0;
$j = 0;
while ($i > 5) {
echo "변수 i의 값은 ".(++$i)."입니다.<br>";
}
do { // do / while문은 조건식과 상관없이 반드시 한 번은 루프를 실행함
echo "변수 j의 값은 ".(++$j)."입니다.<br>";
} while ($j > 5);
for
문while 문과는 달리 자체적으로 초기식, 표현식, 증감식을 모두 포함하고 있는 반복문
while 문보다는 좀 더 간결하게 반복문을 표현할 수 있다.
문법
for (초기식; 조건식; 증감식) {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
}
for ($i = 0; $i < 5; $i++) {
echo "{$i}<br>";
}
배열의 모든 요소를 손쉽게 순회할 수 있도록 해준다.
문법
foreach (배열 as 값을 저장할 변수) {
실행하고자 하는 명령문;
}
$arr = array(2, 4, 6, 8);
foreach ($arr as $value) {
echo "변수 \$value의 현재값은 {$value}입니다.<br>";
}
unset($value);
변수 $value는 foreach 문 내에서만 사용하는 변수이다.
따라서 foreach 문이 끝난 뒤에는 unset() 함수를 사용하여 해제해 주는 것이 좋다.
$arr = array(
"둘" => 2,
"넷" => 4,
"여섯" => 6,
"여덟" => 8,
);
foreach ($arr as $key => $value) {
echo "배열 \$arr에서 키값 '{$key}'에 대한 값은 {$value}입니다.<br>";
}
unset($value);
continue
문루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 한다.
$exceptNum = 4;
for ($i=0; $i<=100; $i++) {
if ($i % $exceptNum == 0)
continue;
echo "{$i} ";
}
break
문루프 내에서 사용
$sum = 0;
$startNum = 1;
$endNum = 100;
$i = $startNum;
while (true) { // 일부러 만든 무한 루프
$sum += $i;
if ($i == $endNum)
break;
$i++;
}
echo "{$startNum}에서부터 {$endNum}까지 더한 값은 {$sum}입니다.";
goto
문프로그램의 흐름을 지정된 레이블(label)로 무조건 변경하는 명령문
제어문을 위해 사용할 수 있는 또 하나의 대체 문법을 제공하고 있다.
endif;
, endswitch;
, endwhile;
, endfor;
, endforeach;
로 대체하면 된다.<?php $var = 5; ?>
<?php if ($var > 6): ?>
변수의 값은 6보다 크다. <!-- 이 부분은 HTML 구문 -->
<?php elseif ($var == 6): ?>
변수의 값은 6 <!-- 이 부분은 HTML 구문 -->
<?php elseif ($var < 6): ?>
변수의 값은 6보다 작다. <!-- 이 부분은 HTML 구문 -->
<?php endif; ?>
대체 문법으로 쓰인 elseif 문 안에 있는 HTML 구문은 변수 $var의 값에 따라 단 하나만이 출력될 것이다.