조건문 종류와 특징
PHP에서 조건문은 프로그램의 흐름을 제어하는 핵심 요소입니다. 상황에 따라 적절한 조건문을 선택하는 것이 중요합니다.
if 문의 다양한 형태
단일 조건은 if로 처리합니다.
$score = 85;
if ($score >= 60) {
echo '합격입니다';
}
양 갈래로 나뉘는 경우 if-else를 사용합니다.
$temperature = 16;
if ($temperature > 25) {
echo '에어컨을 켜세요';
} else {
echo '히터를 켜세요';
}
세 가지 이상의 조건은 if-elseif-else로 표현합니다.
$grade = 78;
if ($grade >= 90) {
echo 'A학점';
} elseif ($grade >= 80) {
echo 'B학점';
} elseif ($grade >= 70) {
echo 'C학점';
} elseif ($grade >= 60) {
echo 'D학점';
} else {
echo 'F학점';
}
switch 문의 활용
명확한 값의 매칭이 필요할 때 switch가 유리합니다. break를 누락하면 의도치 않은 fall-through가 발생하므로 주의가 필요합니다.
$dayCode = 3;
$dayName = '';
switch ($dayCode) {
case 1:
$dayName = '월요일';
break;
case 2:
$dayName = '화요일';
break;
case 3:
$dayName = '수요일';
break;
case 4:
$dayName = '목요일';
break;
case 5:
$dayName = '금요일';
break;
default:
$dayName = '주말 또는 잘못된 입력';
}
echo $dayName;
선택 기준: 연속적인 범위 판단에는
if, 이산적인 값 매칭에는switch를 권장합니다.
반복문의 이해와 활용
for 문
반복 횟수가 명확할 때 적합합니다.
for ($counter = 0; $counter < 5; $counter++) {
echo "현재 반복: {$counter}<br>";
}
while 문과 do-while 문
조건을 먼저 검사하는 while과 본문을 먼저 실행하는 do-while의 차이를 이해해야 합니다.
$number = 0;
while ($number < 5) {
echo "while 반복: {$number}<br>";
$number++;
}
$another = 0;
do {
echo "do-while 반복: {$another}<br>";
$another++;
} while ($another < 5);
실전 예제: 계산기 구현
HTML 폼에서 사용자 입력을 받아 PHP로 처리하는 예제입니다.
입력 폼 (calc_form.html)
<!DOCTYPE html>
<html>
<head>
<title>간단 계산기</title>
</head>
<body>
<form action="calculate.php" method="post">
<p>
<input type="number" name="operand1" placeholder="첫 번째 숫자" required>
</p>
<p>
<input type="number" name="operand2" placeholder="두 번째 숫자" required>
</p>
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">×</option>
<option value="divide">÷</option>
</select>
<button type="submit">계산하기</button>
</form>
</body>
</html>
계산 처리 (calculate.php)
<?php
$firstValue = $_POST['operand1'];
$secondValue = $_POST['operand2'];
$operation = $_POST['operator'];
$finalResult = 0;
switch ($operation) {
case 'add":
$finalResult = $firstValue + $secondValue;
break;
case 'subtract":
$finalResult = $firstValue - $secondValue;
break;
case 'multiply":
$finalResult = $firstValue * $secondValue;
break;
case 'divide":
if ($secondValue == 0) {
echo '0으로 나눌 수 없습니다';
exit;
}
$finalResult = $firstValue / $secondValue;
break;
default:
echo '지원하지 않는 연산입니다';
exit;
}
echo "계산 결과: {$finalResult}";
?>
실전 예제: 다양한 패턴 출력
기본 삼각형
<?php
$height = 5;
for ($row = 1; $row <= $height; $row++) {
for ($star = 1; $star <= $row; $star++) {
echo '*';
}
echo "\n";
}
?>
출력:
* ** *** **** *****
중앙 정렬 삼각형
<?php
$layers = 5;
for ($current = 1; $current <= $layers; $current++) {
for ($space = 1; $space <= $layers - $current; $space++) {
echo ' ';
}
for ($mark = 1; $mark <= 2 * $current - 1; $mark++) {
echo '*';
}
echo "\n";
}
?>
출력:
* *** ***** ******* *********
속이 빈 삼각형
<?php
$depth = 5;
for ($line = 1; $line <= $depth; $line++) {
for ($indent = 1; $indent <= $depth - $line; $indent++) {
echo ' ';
}
for ($symbol = 1; $symbol <= 2 * $line - 1; $symbol++) {
if ($symbol == 1 || $symbol == 2 * $line - 1) {
echo '*';
} else {
echo ' ';
}
}
echo "\n";
}
?>
출력:
* * * * * * * *********
속이 빈 마름모
상반부와 하반부를 분리하여 구성합니다.
<?php
$size = 5;
// 상단 삼각형
for ($upper = 1; $upper <= $size; $upper++) {
for ($gap = 1; $gap <= $size - $upper; $gap++) {
echo ' ';
}
for ($edge = 1; $edge <= 2 * $upper - 1; $edge++) {
if ($edge == 1 || $edge == 2 * $upper - 1) {
echo '*';
} else {
echo ' ';
}
}
echo "\n";
}
// 하단 삼각형
for ($lower = $size - 1; $lower >= 1; $lower--) {
for ($gap = 1; $gap <= $size - $lower; $gap++) {
echo ' ';
}
for ($edge = 1; $edge <= 2 * $lower - 1; $edge++) {
if ($edge == 1 || $edge == 2 * $lower - 1) {
echo '*';
} else {
echo ' ';
}
}
echo "\n";
}
?>
출력:
*
* *
* *
* *
* *
* *
* *
* *
*