PHP教程 - PHP函数范围
在函数和类之外声明的变量是全局变量。全局变量可用在脚本中的其他位置。
函数变量是自包含的,不会影响主脚本中的变量。
来自主脚本的变量不会在函数内部隐式提供。
例子
看看这个例子:
function foo() {
$bar = "www.w3cschool.cn";
}
$bar = "PHP";
foo();
print $bar;
?>
上面的代码生成以下结果。
脚本的执行从$ bar =“PHP"行开始,然后调用foo()函数。
foo()将$ bar设置为www.w3cschool.cn,然后将控制权返回到主脚本$ bar被打印出来。
函数foo()被调用,并且不知道$ bar变量存在于全局作用域中,在其局部作用域创建一个$ bar变量。
一旦函数结束,所有本地作用域都消失了,离开原来的$ bar变量完好无损。
PHP全局变量
可以在脚本中的任何地方访问全局变量,无论是内部还是外部一个函数。
在PHP中,在某个函数之外创建的所有变量,在某种意义上,全局的,因为它们可以通过脚本中的“不在函数内部"的任何其他代码来访问。
要在函数内部使用这样的变量,请写入字全局,后跟函数的代码块中的变量名。
$myGlobal = "Hello there!";
function hello() {
global $myGlobal;
echo "$myGlobal\n";
}
hello(); // Displays "Hello there!"
?>
上面的代码生成以下结果。
hello()函数通过声明它是全局使用来访问$ Global变量全局语句。 然后,该函数可以使用该变量来显示问候语。
实施例1
我们不需要在函数之外创建一个变量来将其用作全局变量。看看下面的脚本:
function setup() {
global $myGlobal;
$myGlobal = "Hello there!";
}
function hello() {
global $myGlobal;
echo "$myGlobal\n";
}
setup();
hello(); // Displays "Hello there!"
?>
上面的代码生成以下结果。
在此脚本中,首先调用setup()函数。它将$ Global变量声明为全局变量,并给它一个值。
然后调用hello()函数。它也将$ myGlobal声明为全局的,这意味着它现在可以访问它的值 之前由setup()设置并显示它。
实施例2
$ GLOBALS数组可以访问函数中的全局变量。在全局范围中声明的所有变量都在$ GLOBALS数组中,您可以在脚本中的任何位置访问。 这里是一个示范:
function foo() {
$GLOBALS["bar"] = "www.w3cschool.cn";
}
$bar = "PHP";
foo();
print $bar;
?>
上面的代码生成以下结果。
我们可以以同样的方式读取变量:
$localbar = $GLOBALS["bar"];
PHP GLOBAL关键字允许在本地访问变量。
function myfunc() {
GLOBAL $foo, $bar, $baz;
++$baz;
}
上面的代码读取全局变量$ foo,$ bar和$ baz。 的++ $ baz行将使$ baz增加1,这将反映在全局范围中。
注意
我们也可以在同一行上同时声明多个全局变量,只是分开变量使用逗号:
function myFunction() {
global $oneGlobal, $anotherGlobal;
}
小心全局变量。如果您在许多不同的地方修改全局变量的值在你的应用程序中,它可能使调试你的代码很困难。
一般来说,你应该避免使用全局变量,除非它是严格必要的。