월루를 꿈꾸는 대학생
PHP 지역 변수 , 전역 변수, 정적 변수 본문
728x90
지역 변수
- local variable
- 선언 된 { } 안에서만 적용되는 변수
전역 변수
- global variable
- 어드에서든 사용 가능한 변수
- local , global 변수와 이름이 같아도 역할이 다름 지역은 { } 안에서만 전역은 php 코드 전체
<?php
function sum($x,$y){
// 지역 변수 local variable
// 지역 변수는 선언된 { } 안에서만 적용 됨
$result = $x+$y;
$local = 10;
return $result."<br>";
}
//global variable 전역변수
//어디에서든 쓸 수 있는 변수명
// local과 global variable 은 이름은 같아도 역할이 다르다
$result = sum(10,20);
echo $result;
// 지역 변수인 local을 불렀으니 에러 뜸 $local은 함수를 통하지 않고 직접적으로 부를 수 없다
echo $local;
?>
지역변수와 전역 변수
- 함수 내의 지역변수를 밖에서 지역변수를 호출하는 것으로는 사용이 불가 -> 에러 발생
<?php
function myfunc(){
// 지역변수로써 함수 외부에서는 출력 불가
$var = 10;
echo $var."<br>";
}
myfunc();
// $var은 함수 안에서만 쓰는 지역변수니까 호출 불가
echo $var;
?>
전역변수를 함수에서 사용하기
- 함수 내에서 전역변수를 호출한다고 해서 바로 사용은 불가
- global 이라는 접두사를 변수에 붙여서 사용하면 그제서야 php에서 전역 변수라고 인식
- php는 변수 선언만하고 사용하면 에러난다 -> 무조건 초기화까지 하고 써야함
- 전역 변수들은 GLOBALS[]라는 배열에 저장되어서 사용 -> associate array처럼 변수를 인덱스처럼 사용해서 쓰자!
ex_ GLOBALS['var'];
<?php
$var2 = 20;
function myfunc2(){
// 전역 변수를 함수안에 쓴다고 해서 바로 쓸 수 있는 것은 아니다
// 이대로면 지역 변수 var2인 줄 알아서 에러냄 초기화 안 하고 써서 그런가
echo $var2."<br>";
// 전역 변수라는 걸 함수문 내에서 알려줘야함
global $var2;
echo $var2."<br>";
//전역 변수들은 GLOBALS라는 배열에 저장이됨
//다음과 같은 형식으로 global 변수 사용 가능
//변수명이 인덱스 역할
//문자니까 var을 따옴표로 감싼다 $쓰면 에러
//어떻게 보면 이것도 associative array 느낌
echo $GLOBALS['var2'];
}
myfunc2();
// 초기화 안 하고 선안만 하면 에러 뜸
echo $local;
?>
정적 변수
로컬 변수 $var의 경우 myfunc()으로 호출되면 메모리 할당 된 후
함수가 끝나면 바로 메모리에서 값이 제거가 됨
즉 그 값을 다시 쓸 수가 없음
정적 변수
- 변수가 메모리 상에 남아있어서 사용이 가능하다
- 정적으로 계속 메모리 상에 남아 있음
- static $변수
<?php
function increment(){
// 정적 변수 static
// 함수가 종료된 후에도 값이 메모리상에 남아 있음
// 그냥 로컬 변수는 바로 휘발되버린다.
static $count = 0;
echo $count."<br>";
$count++;
}
increment();
increment();
?>
728x90
'Programing > PHP' 카테고리의 다른 글
PHP 기초 - get , post (0) | 2022.02.14 |
---|---|
PHP 기초 - include , require (0) | 2022.02.14 |
PHP 함수 (0) | 2022.02.10 |
PHP 배열 (0) | 2022.02.10 |
PHP 조건문 (0) | 2022.02.09 |