PHP 조건문과 반복문 실전 활용

조건문 종류와 특징

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";
}

?>

출력:

    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *

태그: PHP 조건문 반복문 switch for

6월 23일 21:39에 게시됨