본문 바로가기

PHP/PHP7 예비학교

[PHP] 지역 변수(local), 전역 변수(global) 그리고 정적 변수(static)

지역 범위와 전역 범위


<?php
$a = 1;			// 전역 변수

function test()
{ 
    return $a;		// 지역 변수
} 

var_dump( $a );		// int(1)
var_dump( test() );	// NULL
?>

C언어에서 다음과 같이 사용하면 자동으로 전역 변수를 사용하지만 PHP에서는 지역 범위 안에 있는 변수를 전역 변수로 재정의하지 않으면 전역 변수로 사용할 수 없습니다.

전역 변수 (Global Variable)


<?php
$a = 1;

function test()
{
    global $a;
    return $a;
} 

var_dump( $a );		// int(1)
var_dump( test() );	// int(1)
?>

다음과 같이 'global [변수]'를 선언하면 전역 변수로 사용할 수 있습니다.

정적 변수 (Static Variable)


<?php
function test()
{
    $a = 0;
    $a++;
    var_dump( $a );
} 

test();	// int(1)
test();	// int(1)
?>

정적 변수를 사용하지 않는다면 test()를 호출할 때마다 '$a'는 0으로 초기화됩니다.

<?php
function test()
{
    static $a = 0;
    $a++;
    var_dump( $a );
} 

test();	// int(1)
test();	// int(2)
?>

그러나 정적 변수를 사용하면 '$a'는 초기화되지 않고 데이터가 유지됩니다.

반응형