PHP函数范围
PHP教程 - 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中,在某个函数之外创建的所有变量,在某种意义上,全局的,因为它们可以通过脚本中的“不在函数内部"的任何其他代码来访问。
要在函数内部使用这样的变量,请写入字全局,后跟函数的代码块中的变量名。
<?PHP//from w ww.j av a 2 s. c o m
$myGlobal = "Hello there!";
function hello() {
global $myGlobal;
echo "$myGlobal\n";
}
hello(); // Displays "Hello there!"
?>
上面的代码生成以下结果。
hello()函数通过声明它是全局使用来访问$ Global变量全局语句。 然后,该函数可以使用该变量来显示问候语。
实施例1
我们不需要在函数之外创建一个变量来将其用作全局变量。看看下面的脚本:
<?PHP//w ww. j a v a2 s.c o m
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
数组中,您可以在脚本中的任何位置访问。 这里是一个示范:
<?PHP
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; }
小心全局变量。如果您在许多不同的地方修改全局变量的值在你的应用程序中,它可能使调试你的代码很困难。
一般来说,你应该避免使用全局变量,除非它是严格必要的。
更多建议: