Menu
Coddy logo textTech

변수 스코프

Coddy PHP 여정의 기초 섹션에 포함된 레슨. 71개 중 67번째.

function 내부에서 생성된 variable은 그 바깥의 variable과 완전히 별개입니다. 이 개념을 variable scope라고 하며, 이를 이해하면 코드에서 혼란스러운 버그를 방지할 수 있습니다.

함수 내부에서 정의된 변수는 해당 함수 안에서만 존재합니다. 이를 지역 변수라고 합니다:

<?php
function sayHi() {
    $message = "Hello!";
    echo $message;
}

sayHi();
echo $message; // 오류: $message가 여기에 존재하지 않습니다
?>

variable $messagesayHi() inside에서 생성되고 function이 끝나면 사라집니다. 이를 외부에서 액세스하려고 하면 오류가 발생합니다.

마찬가지로 함수 외부에서 정의된 변수는 함수 내부에서 자동으로 사용할 수 없습니다:

<?php
$name = "Alice";

function greet() {
    echo $name; // 오류: $name이 이 함수 내부에서 정의되지 않았습니다
}

greet();
?>

주 코드에 $name이 존재하더라도, function에서는 이를 볼 수 없습니다. function에서 외부 값을 사용하려면 매개변수로 전달하세요. 이것이 이미 배운 깔끔하고 권장되는 방법입니다.

이러한 분리는 실제로 유용합니다. 함수가 프로그램의 다른 부분에 있는 변수를 실수로 변경하지 않도록 하여 코드를 더 예측 가능하고 디버깅하기 쉽게 만들어 줍니다.

challenge icon

챌린지

쉬움

입력된 두 줄을 읽습니다:

  1. 사람의 이름(예: Alice)
  2. 정수로 된 보너스 금액(예: 50)

calculateBonus라는 이름의 function을 만들고, 두 개의 parameters를 받도록 합니다: $name (string) 및 $bonus (int).

function 내부에서:

  • local variable $baseSalary를 만들고 1000으로 설정합니다
  • $baseSalary$bonus를 더하여 total pay를 계산합니다
  • 다음 형식의 string을 return합니다: [name] earns [total]

input 값으로 function을 Call하고, return된 result를 print합니다.

예제 1:

input이 Alice50이면 output은 다음과 같아야 합니다:

Alice earns 1050

예제 2:

input이 Bob200이면 output은 다음과 같아야 합니다:

Bob earns 1200

예제 3:

input이 Emma0이면 output은 다음과 같아야 합니다:

Emma earns 1000

직접 해보기

<?php
// 입력 읽기
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));

// TODO: 아래에 calculateBonus 함수를 작성하세요
// - $name (string)과 $bonus (int)를 매개변수로 받아야 합니다
// - 지역 변수 $baseSalary를 1000으로 설정하여 생성하세요
// - 총 급여를 계산하고 "[name] earns [total]"을 반환하세요



// 함수를 호출하고 결과를 출력하세요
echo calculateBonus($name, $bonus);
?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 PHP 컴파일러