>  기사  >  백엔드 개발  >  PHP 변수 범위 이해

PHP 변수 범위 이해

怪我咯
怪我咯원래의
2017-06-19 15:06:131248검색

변수 범위는 변수가 정의된 컨텍스트(즉, 유효 범위)입니다. JavaScript에는 변수 범위라는 개념이 없습니다. 유사한 개념이 범위일 수 있습니다. 그러나 JavaScript는 변수가 선언될 때의 위치를 ​​참조하는 어휘 범위를 사용하고 PHP에는 변수 선언이 없으므로 변수는 처음으로 값이 할당될 때 변수를 선언하는 것과 동일합니다. 그러므로 둘은 동일하지 않습니다. 이 글에서는 PHP의 변수 범위를 자세히 소개합니다.

범위 범위

대부분의 PHP 변수에는 단일 범위만 있습니다. 이 별도의 범위 범위에는 include 및 require에 의해 도입된 파일도 포함됩니다.

여기서 변수 $a는 포함된 파일 b.inc

<?php
$a = 1;
include &#39;b.inc&#39;;
?>

Function 범위

사용자 사용자 정의 함수에서 로컬 함수 범위 소개됩니다. 함수 내에서 사용되는 모든 변수는 기본적으로 로컬 함수 범위로 제한됩니다.

다음 스크립트는 echo 문이 변수 $a의 로컬 버전을 참조하고 이 범위 내에서는 출력되지 않았기 때문에 출력을 생성하지 않습니다. 값이 할당되었습니다

<?php
$a = 1; /* global scope */
function Test()
{
    echo $a; /* reference to local scope variable */
}
Test();
?>

글로벌 키워드

 다음 스크립트의 출력은 "3"입니다. 전역 변수 a 및

b가 함수에서 선언된 후 두 변수에 대한 모든 참조는 해당 전역 버전을 가리킵니다. PHP는 함수에 의해 선언될 수 있는 전역 변수의 최대 수에 제한이 없습니다.

<?php
$a = 1;
$b = 2;
function Sum()
{
    global $a, $b;
    $b = $a + $b;
}
Sum();
echo $b;//3
?>

전역 범위의 변수에 액세스하는 두 번째 방법은 특별한 PHP 사용자 정의 $GLOBALS 배열을 사용하는 것입니다.

GLOBALS는 연관 배열입니다. 변수는 요소이고 키 이름은 변수 이름에 해당하며 값은 변수의 내용에 해당합니다. GLOBALS가 전역 범위에 존재하는 이유는 GLOBALS가 슈퍼 전역 변수

<?php
$a = 1;
$b = 2;
function Sum()
{
    $GLOBALS[&#39;b&#39;] = $GLOBALS[&#39;a&#39;] + $GLOBALS[&#39;b&#39;];
}
Sum();
echo $b;//3
?>

사전 정의된 변수

모든 스크립트에 대해 PHP는 수많은 사전 정의된 변수를 제공하기 때문입니다. 이러한 변수는 모든 외부 변수를 내장 환경 변수로 나타내고 오류 메시지를 반환 헤더로 나타냅니다.

다음은 사전 정의된 변수 목록입니다.

超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量
$_POST — HTTP POST 变量
$_FILES — HTTP 文件上传变量
$_REQUEST — HTTP Request 变量
$_SESSION — Session 变量
$_ENV — 环境变量
$_COOKIE — HTTP Cookies
$php_errormsg — 前一个错误信息
$HTTP_RAW_POST_DATA — 原生POST数据
$http_response_header — HTTP 响应头
$argc — 传递给脚本的参数数目
$argv — 传递给脚本的参数数组

사전 정의된 변수의 대부분은 슈퍼 전역 변수가 아니므로 '전역'으로 사용해야 합니다. ' 키워드를 사용하면 함수의 로컬 범위에서 사용할 수 있습니다.

수퍼전역 변수

슈퍼전역 변수는 모든 범위에서 유효하므로 '전역' 선언이 필요하지 않습니다.

다음은 슈퍼전역 변수 목록입니다.

$GLOBALS
$_SERVER
$_GET$_POST
$_FILES$_COOKIE
$_SESSION
$_REQUEST
$_ENV
rrree


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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.