컴퓨터 세상/PHP

PHP - 지역 변수, 전역 변수, 정적 변수, 가변 변수

Jimin Daddy 2020. 7. 8. 12:05

PHP의 변수는 일반적으로 지역변수에 해당된다.

함수 안에서 정의되는 변수는 그 함수 안에서만 유효하다.

즉, 함수 안에서 정의되는 변수는 그 함수 안의 영역에서만 의미를 갖는 지역 변수이다.

** 지역 변수

ex) <? 

        $a = 100;

        function print_local_variable() {

            echo "변수 \$a의 값은 {$a} 입니다.";

        }

print_local_variable();

    ?>

   --> 위의 결과 값은 "변수 $a의 값은 입니다." 로 나타남. 그 이유는 $a 는 지역변수 이므로 함수 밖의 변수와 상관 없이 함수 내의 $a는 정의하지 않았기 때문에 아무런 값도 없는 것이다.

** 전역 변수 (함수 내에서 선언)

         만일 이것을 전역 변수로 사용하기 위해서는 아래와 같이 하면 된다.

ex) <?

        $a = 100;

        function print_local_variable() {

            global $a;  // global을 사용하여 전역 변수로 선언.

            echo "변수 \$a의 값은 {$a} 입니다.";

        }

print_local_variable();

    ?>

    --> 위와 같이 전역변수로 선언하면 결과 값은 "변수 $a의 값은 100 입니다." 로 출력됨.

또한 다른 방법으로는 미리 정의된 $GLOBALS라는 이름의 연관배열을 이용하는 것.

ex) <?

        $a = 100;

        $b = 200;

        function sum() {

            $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];  // $GLOBALS 배열을 사용하여 전역 변수로 선언.

        }

        sum();

        echo "변수 \$b 의 값은 ". $b . "입니다.";

    ?>

    --> 위와 같을 경우 "변수 $b의 값은 300 입니다"로 출력됨. 연관 배열의 형태로 변수를 가져온다.

** 정적 변수 (함수내에서 선언)

 - 정적 변수는 전역변수와는 다르게 해당 함수가 종료된 후에도 사라지지 않고 계속 그 값을 가지고 있는 변수.

   단. 해당 함수를 실행할 때만 적용되며, 함수 밖에서는 해당되지 않는다.  

  ex) <?

          function print_static_variable() {

             static $a = 10;  // static으로 정적 변수 선언

             echo "현재 변수 \$a의 값은 ". $a." 입니다. <br>";

             $a = $a + 2;

          }

          print_static_variable();    // 첫번째 함수 실행 출력은 --> "현재 변수 $a의 값은 10 입니다."

          print_static_variable();    // 두번째 함수 실행 출력은 --> "현재 변수 $a의 값은 12 입니다."  이 경우 static 으로 기존에 10의 값을                                               가지고 있으므로 12를 출력한다. static $a = 10; 이라는 행은 처음 실행때만 해당한다.

          print_static_variable();    //  세번째 함수 실행 출력은 --> "현재 변수 $a의 값은 14 입니다.".   static에 의해 최종 값인 12를                                                               가지고 있으므로 14를 출력

            echo "변수 \$a의 값은 ". $a." 입니다. <br>";  // 여기에서 정적변수 $a는 함수를 실행할 때만 해당하므로 함수밖에서는 $a를 선언하지 않았으므로                                                                              출력은 "변수 $a의 값은 입니다."로 $a의 값은 아무것도 출력하지 않음.

      ?>

** 가변 변수

   - 어떤 변수의 값을 이름으로 갖는 변수. 형식은 ${$변수이름} 이다.

   <? 

      $author = "jay";

      ${$author} = "윤준수"  // $author의 값은 "jay" 이므로, ${$author} == $jay 와 같다.

      echo "author : ". $author."<br>";

      echo "jay : ". ${$author} . "<br>";

      echo "jay : ". $jay . "<br>";

     ?>

     위 내용의 결과는 아래와 같다.

     --> author : jay

          jay : 윤준수

          jay : 윤준수

위와 같다.

'컴퓨터 세상 > PHP' 카테고리의 다른 글

PHP - $_SERVER 변수  (0) 2020.07.09
PHP - 미리 정의된 PHP 변수  (0) 2020.07.09
PHP - 배열 변수 및 생성  (0) 2020.07.08
PHP - String 변수  (0) 2020.07.08
PHP 기초  (0) 2020.07.07