변수 스코프
Coddy PHP 여정의 기초 섹션에 포함된 레슨. 71개 중 67번째.
function 내부에서 생성된 variable은 그 바깥의 variable과 완전히 별개입니다. 이 개념을 variable scope라고 하며, 이를 이해하면 코드에서 혼란스러운 버그를 방지할 수 있습니다.
함수 내부에서 정의된 변수는 해당 함수 안에서만 존재합니다. 이를 지역 변수라고 합니다:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // 오류: $message가 여기에 존재하지 않습니다
?>variable $message은 sayHi() inside에서 생성되고 function이 끝나면 사라집니다. 이를 외부에서 액세스하려고 하면 오류가 발생합니다.
마찬가지로 함수 외부에서 정의된 변수는 함수 내부에서 자동으로 사용할 수 없습니다:
<?php
$name = "Alice";
function greet() {
echo $name; // 오류: $name이 이 함수 내부에서 정의되지 않았습니다
}
greet();
?>주 코드에 $name이 존재하더라도, function에서는 이를 볼 수 없습니다. function에서 외부 값을 사용하려면 매개변수로 전달하세요. 이것이 이미 배운 깔끔하고 권장되는 방법입니다.
이러한 분리는 실제로 유용합니다. 함수가 프로그램의 다른 부분에 있는 변수를 실수로 변경하지 않도록 하여 코드를 더 예측 가능하고 디버깅하기 쉽게 만들어 줍니다.
챌린지
쉬움입력된 두 줄을 읽습니다:
- 사람의 이름(예:
Alice) - 정수로 된 보너스 금액(예:
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이 Alice와 50이면 output은 다음과 같아야 합니다:
Alice earns 1050예제 2:
input이 Bob과 200이면 output은 다음과 같아야 합니다:
Bob earns 1200예제 3:
input이 Emma와 0이면 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);
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러