php变量作用域

php变量作用域教程

php 中的一个 变量常量、类型或 函数)在程序中都有一定的作用范围,我们称之为作用域。php 变量作用域分为局部作用域、全局作用域和超全局作用域。

php变量作用域详解

php局部变量

在函数内部声明/定义的变量叫局部变量,局部变量的作用域仅限于函数内部。在函数内部定义的变量,函数的 参数返回值iffor 结构内部使用的变量等都是局部变量。

php全局变量

在函数外部声明/定义的变量叫全局变量。php 全局变量在整个文件都有效。

php超全局变量

PHP 超全局变量,在整个程序中都可以访问,我们可以使用 $GLOBALS 访问 PHP 的超全局变量。

案例

局部变量

定义在函数内部的变量,为局部变量

<?php echo "嗨客网(www.haicoder.net)<br>"; function getName(){ $name = "HaiCoder"; echo "Name = ", $name, "<br>"; } getName(); echo "Name = ", $name, "<br>";

程序运行后,控制台输出如下:

11_PHP变量作用域.png

我们看到,我们在函数内部定义了一个变量 name,接着,我们在函数内部访问该变量时,可以正常访问,但我们在函数外部访问时,程序报错,因此,我们不可以在函数外部访问函数内部的局部变量。

全局变量

在函数外部定义的变量,为全局变量

<?php echo "嗨客网(www.haicoder.net)<br>"; $name = "HaiCoder"; function getName(){ echo "Name = ", $name, "<br>"; } getName(); echo "Name = ", $name, "<br>";

程序运行后,控制台输出如下:

12_PHP变量作用域.png

我们在函数外部,定义了一个变量 name,接着,我们分别在函数内部和函数外部访问该变量,我们看到,在函数内部访问时,程序报错,在函数外部访问,程序正常,我们在函数内部访问全局变量,需要使用 global 关键字,修改程序如下:

<?php echo "嗨客网(www.haicoder.net)<br>"; $name = "HaiCoder"; function getName(){ global $name; echo "Name = ", $name, "<br>"; } getName(); echo "Name = ", $name, "<br>";

程序运行后,控制台输出如下:

13_PHP变量作用域.png

我们看到,我们在函数内部访问全局变量时,使用了 global 关键字,告诉编译器,我们这里需要使用的是全局的 name 变量,因此,程序不再报错。

超局部变量

超全局变量,使用 GLOBALS 定义

<?php echo "嗨客网(www.haicoder.net)<br>"; $name = "HaiCoder"; function getName(){ echo "Name = ", $GLOBALS['name'], "<br>"; $GLOBALS['name'] = 'haicoder'; } getName(); echo "Name = ", $GLOBALS['name'], "<br>";

程序运行后,控制台输出如下:

14_PHP变量作用域.png

我们首先,定义了一个全局变量 name,并赋值,接着,我们在函数内部,使用了 GLOBALS 来访问了全局变量,并且,我们在函数内部,给 GLOBALS 里的变量重新赋值,最后,在函数外部,我们访问该变量时,已经被修改了。

php变量作用域总结

php 中的一个变量(常量、类型或函数)在程序中都有一定的作用范围,我们称之为作用域。php 变量作用域分为局部作用域、全局作用域和超全局作用域。