Php 简明教程
PHP - Variable Scope
在 PHP 中,变量的作用域是其被定义并可访问的上下文的程度。通常,任何没有循环或函数等的简单顺序 PHP 脚本都只有一个作用域。在 "<?php" 和 "?>" 标记内声明的任何变量都从其定义的点起对整个程序都可用。
根据作用域,PHP 变量可以是以下三种类型中的任何一种 −
主脚本中的变量也可以通过 include 或 require 语句引入任何其他脚本。
Example
在下面的示例中,“test.php”脚本被包含在主脚本中。
main.php
<?php
$var=100;
include "test.php";
?>
test.php
<?php
echo "value of \$var in test.php : " . $var;
?>
当主脚本执行时,它将显示以下 output −
value of $var in test.php : 100
但是,当脚本具有用户定义的函数时,所有内部变量都有一个局部作用域。因此,无法在外部访问在一个函数内定义的变量。在函数外部(上方)定义的变量具有全局作用域。
Example
请看以下示例:
<?php
$var=100; // global variable
function myfunction() {
$var1="Hello"; // local variable
echo "var=$var var1=$var1" . PHP_EOL;
}
myfunction();
echo "var=$var var1=$var1" . PHP_EOL;
?>
它将生成以下 output −
var= var1=Hello
var=100 var1=
PHP Warning: Undefined variable $var in /home/cg/root/64504/main.php on line 5
PHP Warning: Undefined variable $var1 in /home/cg/root/64504/main.php on line 8
Note 全局变量不会自动在函数的局部作用域内可用。此外,无法在外部访问函数内的变量。
The "global" Keyword
要使全局变量能够在函数的局部作用域内访问,应该通过使用“ global ”关键字显式地完成。
Example
PHP 脚本如下所示 −
<?php
$a=10;
$b=20;
echo "Global variables before function call: a = $a b = $b" . PHP_EOL;
function myfunction() {
global $a, $b;
$c=($a+$b)/2;
echo "inside function a = $a b = $b c = $c" . PHP_EOL;
$a=$a+10;
}
myfunction();
echo "Variables after function call: a = $a b = $b c = $c";
?>
它将生成以下 output −
Global variables before function call: a = 10 b = 20
inside function a = 10 b = 20 c = 15
Variables after function call: a = 20 b = 20 c =
PHP Warning: Undefined variable $c in /home/cg/root/48499/main.php on line 12
现在可以在函数内处理全局变量。此外,对函数内全局变量所做的任何更改都将在全局名称空间中反映出来。
$GLOBALS Array
PHP 将所有全局变量存储在一个称为 $GLOBALS 的关联数组中。变量的名称和值组成键值对。
Example
在以下 PHP 脚本中,$GLOBALS 数组用于访问全局变量 −
<?php
$a=10;
$b=20;
echo "Global variables before function call: a = $a b = $b" . PHP_EOL;
function myfunction() {
$c=($GLOBALS['a']+$GLOBALS['b'])/2;
echo "c = $c" . PHP_EOL;
$GLOBALS['a']+=10;
}
myfunction();
echo "Variables after function call: a = $a b = $b c = $c";
?>
它将生成以下 output −
Global variables before function call: a = 10 b = 20
c = 15
PHP Warning: Undefined variable $c in C:\xampp\htdocs\hello.php on line 12
Variables after function call: a = 20 b = 20 c =