변수 스코프
Coddy PHP 여정의 기초 섹션에 포함된 레슨. 71개 중 67번째.
함수 안에서 생성된 변수는 함수 밖의 변수와 완전히 별개입니다. 이 개념을 변수 스코프라고 하며, 이를 이해하면 코드에서 혼란스러운 버그를 예방할 수 있습니다.
함수 안에서 정의된 변수는 해당 함수 안에서만 존재합니다. 이를 지역 변수라고 합니다:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // 오류: $message는 여기서 존재하지 않습니다
?>변수 $message는 sayHi() 내부에서 만들어지고 함수가 끝나면 사라집니다. 함수 바깥에서 이 변수에 접근하려고 하면 오류가 발생합니다.
마찬가지로 함수 밖에서 정의한 변수는 함수 안에서 자동으로 사용할 수 없습니다.
<?php
$name = "Alice";
function greet() {
echo $name; // 오류: 이 함수 안에는 $name이 정의되어 있지 않습니다
}
greet();
?>$name이 메인 코드에 존재하더라도 함수에서는 이를 볼 수 없습니다. 함수에서 외부 값을 사용하려면 매개변수로 전달하세요. 이것이 이미 배운 깔끔하고 권장되는 방법입니다.
이러한 분리는 실제로 유용합니다. 함수가 프로그램의 다른 부분에 있는 변수를 실수로 변경하지 않으므로 코드의 동작을 더 예측하기 쉽고 디버깅하기도 쉬워집니다.
챌린지
쉬움입력 두 줄을 읽으세요:
- 사람의 이름(예:
Alice) - 정수로 된 보너스 금액(예:
50)
두 개의 매개변수 $name(문자열)과 $bonus(정수)를 받는 calculateBonus 함수를 만드세요.
함수 안에서:
- 지역 변수
$baseSalary를 만들고1000으로 설정하세요. $baseSalary와$bonus를 더해 총급여를 계산하세요.[name] earns [total]형식의 문자열을 반환하세요.
입력값으로 함수를 호출하고 반환된 결과를 출력하세요.
예제 1:
입력이 Alice와 50이라면 출력은 다음과 같아야 합니다:
Alice earns 1050예제 2:
입력이 Bob과 200이라면 출력은 다음과 같아야 합니다:
Bob earns 1200예제 3:
입력이 Emma와 0이라면 출력은 다음과 같아야 합니다:
Emma earns 1000직접 해보기
<?php
// 입력 읽기
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: 아래에 calculateBonus 함수 만들기
// - $name (string)과 $bonus (int)를 매개변수로 받아야 합니다
// - 1000으로 설정된 지역 변수 $baseSalary를 만듭니다
// - 총 급여를 계산하고 "[name] earns [total]"을 반환합니다
// 함수를 호출하고 결과를 출력합니다
echo calculateBonus($name, $bonus);
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러