php范围,PHP函数范围

PHP教程 - PHP函数范围

在函数和类之外声明的变量是全局变量。全局变量可用在脚本中的其他位置。

函数变量是自包含的,不会影响主脚本中的变量。

来自主脚本的变量不会在函数内部隐式提供。

例子

看看这个例子:

function foo() {

$bar = "www.w3cschool.cn";

}

$bar = "PHP";

foo();

print $bar;

?>

上面的代码生成以下结果。

ec3fd7ca8c835581720a8813eedea6d1.png

脚本的执行从$ 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!"

?>

上面的代码生成以下结果。

051f9a880ec2b112ca1bb2f972c9b169.png

hello()函数通过声明它是全局使用来访问$ Global变量全局语句。 然后,该函数可以使用该变量来显示问候语。

实施例1

我们不需要在函数之外创建一个变量来将其用作全局变量。看看下面的脚本:

function setup() {

global $myGlobal;

$myGlobal = "Hello there!";

}

function hello() {

global $myGlobal;

echo "$myGlobal\n";

}

setup();

hello(); // Displays "Hello there!"

?>

上面的代码生成以下结果。

d527a7879de576a7ea9e38269c87bef0.png

在此脚本中,首先调用setup()函数。它将$ Global变量声明为全局变量,并给它一个值。

然后调用hello()函数。它也将$ myGlobal声明为全局的,这意味着它现在可以访问它的值  之前由setup()设置并显示它。

实施例2

$ GLOBALS数组可以访问函数中的全局变量。在全局范围中声明的所有变量都在$ GLOBALS数组中,您可以在脚本中的任何位置访问。 这里是一个示范:

function foo() {

$GLOBALS["bar"] = "www.w3cschool.cn";

}

$bar = "PHP";

foo();

print $bar;

?>

上面的代码生成以下结果。

f0923a2138697d72744b0f75adab33bc.png

我们可以以同样的方式读取变量:

$localbar = $GLOBALS["bar"];

PHP GLOBAL关键字允许在本地访问变量。

function myfunc() {

GLOBAL $foo, $bar, $baz;

++$baz;

}

上面的代码读取全局变量$ foo,$ bar和$ baz。 的++ $ baz行将使$ baz增加1,这将反映在全局范围中。

注意

我们也可以在同一行上同时声明多个全局变量,只是分开变量使用逗号:

function myFunction() {

global $oneGlobal, $anotherGlobal;

}

小心全局变量。如果您在许多不同的地方修改全局变量的值在你的应用程序中,它可能使调试你的代码很困难。

一般来说,你应该避免使用全局变量,除非它是严格必要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值