PHP에서 global과 $GLOBALS[]의 사용 및 차이점

巴扎黑
풀어 주다: 2016-11-11 15:00:42
원래의
1238명이 탐색했습니다.

변수의 범위는 변수가 정의된 컨텍스트(즉, 유효 범위)입니다. 대부분의 PHP 변수에는 단일 범위만 있습니다. 이 단일 범위 범위에는 include 및 require에 의해 도입된 파일도 포함됩니다. 예:

Php 코드

<?php  
$a = 1;  
include &#39;b.inc&#39;;  
?>
로그인 후 복사

여기서 $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[&#39;b&#39;] = $GLOBALS[&#39;a&#39;] + $GLOBALS[&#39;b&#39;];  
}  
  
Sum();  
echo $b;//3  
?>
로그인 후 복사

$ GLOBALS는 연관 배열이고, 각 변수는 요소이며, 키 이름은 변수 이름에 해당하고, 값은 변수의 내용에 해당합니다. $GLOBALS는 슈퍼전역 변수이기 때문에 $GLOBALS는 전역 범위에 존재합니다. 다음 예는 슈퍼 전역 변수의 사용을 보여줍니다.

예제 #3 슈퍼 전역 변수 및 범위를 보여주는 예

PHP 코드

<?php  
function test_global()  
{  
    // 大多数的预定义变量并不 "super",它们需要用 &#39;global&#39; 关键字来使它们在函数的本地区域中有效。  
    global $HTTP_POST_VARS;  
  
    echo $HTTP_POST_VARS[&#39;name&#39;];  
  
    // Superglobals 在任何范围内都有效,它们并不需要 &#39;global&#39; 声明。Superglobals 是在 PHP 4.1.0 引入的。  
    echo $_POST[&#39;name&#39;];  
}  
?>
로그인 후 복사

global과 $GLOBALS[]

$GLOBALS['var']의 차이점은 외부 전역 변수 자체이고, global $var는 외부 전역 변수와 동일한 이름의 참조 또는 포인터입니다. $var

PHP 코드

<?php   
$var1 = 1;   
function test(){   
unset($GLOBALS[&#39;var1&#39;]);   
}   
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.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!