PHP面试一战到底
上QQ阅读APP看书,第一时间看更新

3.4 作用域

变量的作用域指变量的生效范围,或其定义的上下文背景。

3.4.1 函数作用域

默认情况下,变量的作用域局限在函数范围之内。这有以下两层意思:

● 函数范围之内定义的变量,仅在函数范围之内可见。

● 函数范围之外定义的变量,不能在函数中可见,除非显式使用global关键字。

例如下例中,定义在函数范围之外的$a = 1和定义在test函数里的$a = 2,两者互不影响。

(源码文件:ch03/scope_1.php)

3.4.2 global关键字

使用global关键字可以在函数中引用全局变量,例如下例中test函数内可以使用global关键字来引用外部定义的全局变量。

(源码文件:ch03/scope_2.php)

也可以使用$GLOBALS来引用全局变量。

3.4.3 引用文件的变量作用域

变量作用域包含了使用include或require引入的文件,例如我们在scope_var.php定义了$a=1,那么该变量的作用域会带到引用该文件的地方。

例1:(源码文件:ch03/scope_var.php)

<?php
$a = 1;

例2:(源码文件:ch03/scope_3.php)

<?php
include('./scope_var.php');
//require('./scope_var.php');
echo $a; //输出 1

3.4.4 超全局变量

超全局变量,即3.2节介绍的预定义变量,其作用域为全局,在任何地方都可以引用。