묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
정적변수와 전역변수에 대한 질문여...
2003.01.14 04:40
정적변수와 전역변수를 함수내에 같이 사용해 볼려고 코딩을 했는데...
코딩하는 중에 이해가 안 가는 부분이 나와서 이렇게 질문을 드립니다...
질문의 내용은....
1행 <?
2행 function sun(){
3행 static $a=10;
4행 global $a;
5행 $a=$a+2;
6행 echo "$a의 값은 ".$a."입니다.<br>";
7행 }
8행 sun();
9행 sun();
10행 sun();
11행 echo "$a의 값은 ".$a."입니다.<br>";
?>
이와 같이 코딩을 했을 때는
$a의 값은 2입니다.
$a의 값은 4입니다.
$a의 값은 6입니다.
$a의 값은 6입니다.
라고 나오는데...
분명 static 을 이용하여 함수내에서 값을 저장하게 했는데...왜 값이 이렇게 나오나요...??
이번에는 3행과 4행의 순서를 바꿔서...
1행 <?
2행 function sun(){
3행 global $a;
4행 static $a=10;
5행 $a=$a+2;
6행 echo "$a의 값은 ".$a."입니다.<br>";
7행 }
8행 sun();
9행 sun();
10행 sun();
11행 echo "$a의 값은 ".$a."입니다.<br>";
?>
와 같이 코딩을 하면..
$a의 값은 12입니다.
$a의 값은 14입니다.
$a의 값은 16입니다.
$a의 값은 입니다.
라고 나오는데...
global 사용하여 $a를 전역변수로 바꾸었는데...출력되는 결과중 맨 마지막 줄에 $a의 값이 안나오고
왜 "$a의 값은 입니다." 라고 나오나요??
이것 때문에...지금 미치겠네요, 어떻게 저렇게 처리되서 결과가 나오는지 과정설명 부탁드려요...(__);;
코딩하는 중에 이해가 안 가는 부분이 나와서 이렇게 질문을 드립니다...
질문의 내용은....
1행 <?
2행 function sun(){
3행 static $a=10;
4행 global $a;
5행 $a=$a+2;
6행 echo "$a의 값은 ".$a."입니다.<br>";
7행 }
8행 sun();
9행 sun();
10행 sun();
11행 echo "$a의 값은 ".$a."입니다.<br>";
?>
이와 같이 코딩을 했을 때는
$a의 값은 2입니다.
$a의 값은 4입니다.
$a의 값은 6입니다.
$a의 값은 6입니다.
라고 나오는데...
분명 static 을 이용하여 함수내에서 값을 저장하게 했는데...왜 값이 이렇게 나오나요...??
이번에는 3행과 4행의 순서를 바꿔서...
1행 <?
2행 function sun(){
3행 global $a;
4행 static $a=10;
5행 $a=$a+2;
6행 echo "$a의 값은 ".$a."입니다.<br>";
7행 }
8행 sun();
9행 sun();
10행 sun();
11행 echo "$a의 값은 ".$a."입니다.<br>";
?>
와 같이 코딩을 하면..
$a의 값은 12입니다.
$a의 값은 14입니다.
$a의 값은 16입니다.
$a의 값은 입니다.
라고 나오는데...
global 사용하여 $a를 전역변수로 바꾸었는데...출력되는 결과중 맨 마지막 줄에 $a의 값이 안나오고
왜 "$a의 값은 입니다." 라고 나오나요??
이것 때문에...지금 미치겠네요, 어떻게 저렇게 처리되서 결과가 나오는지 과정설명 부탁드려요...(__);;
과
global은 다른뜻이 있습니다..
이건알고 있으실꺼구요..
static 함수 내부에서만 작동되구요
global 은 함수가 아니라도 외부에서도 작동됩니다.
static 이있는 함수에선 값이 10 이 되어 지거
global 이 있으니 외부에선 모두 0 이되죠.
global $a=10;
static $a=10; 이라고 한다면 외부건 내부건 순거가 바뀌건 모두 값은 같을껍니다.
static 은 함수가 실행될때 그값을 기억하곤 있지만 외부로 넘겨주진 못하구요
global 로 선언된 값은 외부로 넘겨는 주지만 이전 값을 기억하고 있지는않습니다.
static 은 값을 기억했다가 다음에 함수가 실행될때 그값이 +되묜 +된값을 기억한담니다.
처음지정된 은 단 한번만 효과를 보고 다음엔 더하거나 빼거나 된값이 들어 가 있단말씀..
static 먼저냐 global 이 먼저냐의 차이는 $a 에 값이 있냐 없냐의 차이 입니다.