티스토리 뷰

웹 개발자로써/PHP

2010년1월6일_1

GsBOB 2010. 1. 6. 23:33


[global 변수와 static 변수의 차이]

<?PHP
 function inc()
 {
  global $i;
  print $i."<br>";

  $i = $i + 1;
 }
 
 $i = 0;
 
 for( $j = 0 ; $j < 10 ; $j++){
  inc();
 }
?>

윗 부분은 global 변수의 한 부분이다.  global변수를 지정함으로써 함수 내에서만

사용 할 수 있는 변수를 모든 곳에서 사용 가능하게 해준다.

그럼 static변수를 보자.. static 변수 같은 경우에는 공부 해보신 분을 알겠지만,

메모리에 한 부분을 떡 하니 차지한다. 어떻게 보면 결과는 global과 똑같지만,

엄연히 개념이 다른 것이다.

<?PHP
 function inc()
 {
  $i = 0;
  static $j = 0;

  print "$i $j"."<br>";

  $i = $i + 1;
  $j = $j + 1;
 }

  $i = 0;
  $j = 0;
 
 for( $j = 0 ; $j < 10 ; $j++){
  inc();
 }
?>

위 소스를 보게 되면 결과가

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9

이렇게 나오는데.. 이것은 변수 i는 항상 0으로 초기화가 되지만

변수 j같은 경우 static으로 메모리 한부분의 0으로써 자리를 잡고 있는 상태에서

추가가 되므로 값이 계속 증가한다.

즉, static은 전처리 단계로써 컴파일시 이미 메모리에 저장이 되고

global이나 다른 변수들은 실행시 메모리에 저장된다고 생각하면 조금 이해가

더 잘 될 듯 하다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함