Variable Scope
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)
두 개의 매개변수를 받는 calculateBonus라는 함수를 만드세요: $name (string) 및 $bonus (int).
함수 내부에서:
- 로컬 변수
$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
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // Error: $message doesn't exist here
?>마찬가지로, 함수 외부에서 정의된 변수는 함수 내부에서 자동으로 사용할 수 없습니다:
<?php
$name = "Alice";
function greet() {
echo $name; // Error: $name is not defined inside this function
}
greet();
?>함수에서 외부 값을 사용하려면, 매개변수로 전달하세요.
직접 해보기
<?php
// 입력 읽기
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: 아래에 calculateBonus 함수 생성
// - $name (string)과 $bonus (int)를 매개변수로 받아야 함
// - $baseSalary 로컬 변수를 1000으로 설정
// - 총 급여 계산하고 "[name] earns [total]" 반환
// 함수 호출하고 결과 출력
echo calculateBonus($name, $bonus);
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators