월루를 꿈꾸는 대학생

PHP 지역 변수 , 전역 변수, 정적 변수 본문

Programing/PHP

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

하즈시 2022. 2. 10. 13:07
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