Home > Article > Backend Development > Understand PHP variable scope
Variable scope is the context in which it is defined (that is, its effective scope). In JavaScript, there is no concept of variable scope. A similar concept may be scope. However, since JavaScript uses lexical scope, which refers to the position when the variable is declared; and PHP does not have variable declaration, the variable is equivalent to declaring the variable when it is assigned a value for the first time. Therefore, the two are not the same. This article will introduce the variable scope in PHP in detail
Range span
Most PHP variables have only a single scope. This separate scope span also includes files introduced by include and require
Here the variable $a will take effect in the included file b.inc
<?php $a = 1; include 'b.inc'; ?>
Function scope
In user custom function, a local function scope will be introduced. Any variables used inside the function will be restricted to the local function scope by default
The following script will not produce any output because the echo statement refers to a local version of the variable $a, and in this scope, it has not been assigned a value
<?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?>
global keyword
The output of the following script will be "3". After global variables a and
b are declared in a function, all references to either variable will point to its global version. PHP has no limit on the maximum number of global variables that can be declared by a function
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b;//3 ?>
The second way to access variables in the global scope is to use a special PHP custom $GLOBALS array
GLOBALS is an associative array, each variable is an element, the key name corresponds to the variable name, and the value corresponds to the content of the variable. The reason why GLOBALS exists in the global scope is because GLOBALS is a superglobal variable
<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b;//3 ?>
predefined variable
For all For scripts, PHP provides a large number of predefined variables. These variables represent all external variables as built-in environment variables, and error messages as return headers
The following is a list of predefined variables
超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量 $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 — 传递给脚本的参数数组
Most of the predefined variables Variables are not superglobal variables, they need to use the 'global' keyword to make them valid in the local scope of the function
Superglobal variables
Superglobal variables are valid in any scope, They do not require a 'global' declaration
Below is a list of superglobal variables
$GLOBALS $_SERVER $_GET$_POST $_FILES$_COOKIE $_SESSION $_REQUEST $_ENV
<?php function test_global() { //预定义变量 global $HTTP_POST_VARS; echo $HTTP_POST_VARS['name']; //超全局变量 echo $_POST['name']; } ?>
The above is the detailed content of Understand PHP variable scope. For more information, please follow other related articles on the PHP Chinese website!