변수의 범위는 변수가 정의된 컨텍스트(즉, 유효 범위)입니다. 대부분의 PHP 변수에는 단일 범위만 있습니다. 이 단일 범위 범위에는 include 및 require에 의해 도입된 파일도 포함됩니다. 예:
Php 코드
<?php $a = 1; include 'b.inc'; ?>
여기서 $a 변수는 포함된 파일 b.inc에 적용됩니다. 그러나 사용자 정의 함수에는 로컬 함수 범위가 도입됩니다. 함수 내에서 사용되는 모든 변수는 기본적으로 로컬 함수 범위로 제한됩니다. 예:
Php 코드
<?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?>
echo 문이 $a 변수의 로컬 버전을 참조하고 이 범위 내에서 이 스크립트에는 출력이 없습니다. 값이 할당되지 않았습니다. PHP의 전역 변수는 C 언어와 약간 다르다는 것을 알 수 있습니다. C 언어에서 전역 변수는 로컬 변수에 의해 재정의되지 않는 한 자동으로 함수에 적용됩니다. 이로 인해 일부 문제가 발생할 수 있으며 누군가 실수로 전역 변수를 변경할 수도 있습니다. PHP의 전역 변수는 함수에서 사용될 때 전역으로 선언되어야 합니다.
global 키워드
먼저 global 사용 예:
예시 #1 global 사용
PHP 코드
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?>
위 스크립트의 출력은 “3”입니다. 전역 변수 $a 및 $b가 함수에서 선언된 후 두 변수에 대한 모든 참조는 해당 전역 버전을 가리킵니다. PHP는 함수가 선언할 수 있는 전역 변수의 최대 개수에 제한이 없습니다.
전역 범위의 변수에 액세스하는 두 번째 방법은 특별한 PHP 사용자 정의 $GLOBALS 배열을 사용하는 것입니다. 이전 예는 다음과 같이 작성할 수 있습니다.
예 #2 $GLOBALS를 사용하여 전역 대체
Php 코드
<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b;//3 ?>
$ GLOBALS는 연관 배열이고, 각 변수는 요소이며, 키 이름은 변수 이름에 해당하고, 값은 변수의 내용에 해당합니다. $GLOBALS는 슈퍼전역 변수이기 때문에 $GLOBALS는 전역 범위에 존재합니다. 다음 예는 슈퍼 전역 변수의 사용을 보여줍니다.
예제 #3 슈퍼 전역 변수 및 범위를 보여주는 예
PHP 코드
<?php function test_global() { // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。 global $HTTP_POST_VARS; echo $HTTP_POST_VARS['name']; // Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。 echo $_POST['name']; } ?>
global과 $GLOBALS[]
$GLOBALS['var']의 차이점은 외부 전역 변수 자체이고, global $var는 외부 전역 변수와 동일한 이름의 참조 또는 포인터입니다. $var
PHP 코드
<?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?>
결과: 알림: 정의되지 않은 변수: var1. unset 함수에 의해 변수 var1이 삭제되었기 때문입니다.
Php 코드
<?php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1; ?>
결과: 인쇄 1
별칭 참조만 삭제되고 해당 값은 어떤 방식으로든 변경되지 않습니다.
global $var는 실제로 &$GLOBALS['var']이며, 이는 외부 변수를 호출하기 위한 별칭일 뿐입니다.
위 코드의 $var1과 $GLOBALS['var1']은 동일한 변수 자체를 참조합니다.
PHP의 전역 변수의 기능은 전역 변수를 정의하는 것이지만, 이 전역 변수는 웹사이트 전체에 적용되는 것이 아니라 현재 페이지(include 또는 require에 있는 모든 파일 포함)에 적용됩니다.
결론:
1.$GLOBALS['var']는 외부 전역 변수 자체입니다.
2.global $var는 동일한 이름의 참조 또는 포인터입니다. 외부 $var.