728x90
안녕하세요,
오늘은 php 변수의 범위 global, local, static의 차이에 대해 알아보겠습니다.
1. Local 변수(지역변수)
- 함수 내부에서 선언된 변수
- 함수 밖에서는 사용할 수 없음
- 함수 실행 시 스택 메모리에 올라가고, 함수 종료 시 해제됨
- 매번 새롭게 생성되므로, 이전 상태는 유지되지 않음
function sayHello() {
$message = "Hello";
echo $message;
}
sayHello();
실행결과
Hello
2. Global 변수
- 함수 외부에서 선언된 변수
- 함수 안에서는 직접 접근할 수 없음
- global 키워드를 사용해야 함수 안에서도 사용할 수 있음
- 실제로는 GLOBALS라는 연관 배열에 저장됨
$name = "홍길동";
function greet() {
global $name; // 전역 변수 사용 선언
echo "안녕하세요, $name";
}
function showName() {
echo $GLOBALS['name'];
}
greet();
echo "<br> GLOBALS 배열:";
showName();
실행결과
안녕하세요, 홍길동
GLOBALS 배열:홍길동
3. Static 변수
- 함수 안에서 선언되지만, 함수가 끝나도 값이 유지됨
- 초기화는 단 한 번만 일어남
- 함수가 호출될 때 기존 값을 재사용합니다.
- 함수 내부에 선언되지만, PHP는 이를 함수 실행 컨텍스트 외부의 정적 저장소에 따로 보관함
- 단, 스크립트가 종료되면 사라짐
function counter() {
static $count = 0;
$count++;
echo "호출 횟수: $count<br>";
}
counter(); // 호출 횟수: 1
counter(); // 호출 횟수: 2
counter(); // 호출 횟수: 3
실행결과
호출 횟수: 1
호출 횟수: 2
호출 횟수: 3
* 일반 변수였다면 0부터 다시 시작했겠지만, static이기 때문에 상태가 계속 유지됨.
'PHP' 카테고리의 다른 글
| [PHP] array_replace_recursive() 로 중첩 배열 덮어쓰기 (0) | 2025.06.15 |
|---|---|
| [PHP] array_count_value() 와 str_repeat()함수 활용하여 텍스트 막대 그래프 만들기 (0) | 2025.06.08 |
| [PHP] strtr() 함수로 메시지 템플릿 만들기 (0) | 2025.05.25 |
| [PHP] array_column() 함수로 배열 속 열(column)만 뽑아내기 (0) | 2025.05.18 |
| [PHP] array_reduce()로 배열 축약하기 (0) | 2025.05.11 |