>  기사  >  백엔드 개발  >  PHP의 전역 변수에 대해 이야기해 보세요.

PHP의 전역 변수에 대해 이야기해 보세요.

little bottle
little bottle앞으로
2019-04-22 17:38:333009검색

우리 모두 알고 있듯이, PHP 함수에서 전역 변수를 사용하려면 슈퍼 전역 변수$GLOBALS,另一种是在函数中使用global 키워드 선언을 사용하는 것이 좋습니다. 슈퍼 전역 변수 $GLOBALS를 사용하는 방법은 누구나 알고 있습니다. 변수를 선언하는 전역 방법.

다음 예를 살펴보겠습니다.

$a = 1;
$b = 2;
function test() {
    global $a, $b;
}
test();

test() 함수를 실행할 때 메모리에 있는 변수의 상태는 어떻습니까? 아래 그림과 같이

test 함수를 선언합니다. test() 함수가 호출되면 global은 함수에서 두 개의 로컬 변수 $a, $b를 선언하고 전역 변수 $a 및 $b 이때 임시 변수 $a와 $b는 각각 전역 변수 $a와 $b에 대한 참조와 동일합니다. 따라서 함수에서 지역변수 $a, $b의 값을 수정하는 것은 전역변수의 값을 수정하는 것과 같습니다.

$a = 1;
$b = 2;
function test() {
    global $a, $b;
    $a = 11;
    $b = 12;
    unset($a);
    unset($b);
}
test();
echo $a;
echo &#39;<br>&#39;;
echo $b;

브라우저에서 출력:

11
22

Unset()은 위 코드에서도 사용됩니다. 전역 변수 $a 및 $b의 값은 echo 출력을 통해 출력될 수 있습니다. test() 함수에 전달된 $a 및 $b는 지역 변수일 뿐이며 unset()은 지역 변수와 전역 변수의 참조 연결을 끊습니다.

또 다른 상황을 살펴보겠습니다. 테스트 함수에서 선언한 변수가 전역 변수에 없으면 어떻게 될까요?

먼저 결론을 말씀드리겠습니다. 함수에서 global 키워드를 사용하여 선언한 변수가 전역 범위에 같은 이름의 변수가 없으면 먼저 같은 이름의 전역 변수가 생성되고, 그러면 함수에 지역 변수가 생성되고 전역 변수의 참조는 지역 변수를 가리킵니다.

function test() {
    global $a, $b;
    $a = 11;
    $b = 22;
    unset($a);
    unset($b);
}
echo $a;
echo &#39;<br>&#39;;
echo $b;

브라우저를 통한 출력:

11
22

위 코드에서는 테스트 함수에서 변수 $a, $b를 선언하기 위해 global을 사용했습니다. $a와 $b는 전역 범위에서 선언되지 않았지만 전역은 여전히 ​​선언됩니다. 먼저 전역 변수 $a 및 $b를 만든 다음 테스트 함수에서 $a, $b를 만든 다음 전역 변수의 참조를 테스트 함수의 로컬 변수로 지정합니다. 따라서 함수에서 $a 및 $b를 설정 해제하더라도 함수가 실행된 후에도 $a 및 $b를 인쇄할 수 있습니다. 전역 변수에 이미 두 개의 변수가 있기 때문입니다.

그래서 최종적으로 다음과 같은 결론을 내릴 수 있습니다.

global을 사용하여 함수에서 변수를 선언할 때 먼저 전역 범위에서 동일한 이름을 가진 변수가 있는지 확인합니다. 전역 변수의 참조는 전역 변수를 사용하여 동일한 이름을 가진 변수를 가리킵니다. 전역 범위에 같은 이름의 변수가 없으면 먼저 같은 이름의 전역 변수를 만든 다음 로컬 변수를 만든 다음 전역 변수의 참조를 로컬 변수로 지정합니다.

관련 튜토리얼: PHP 비디오 튜토리얼

위 내용은 PHP의 전역 변수에 대해 이야기해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제