跨境电商
经验交流分享

PHP变量范围

The scope of a variable is the context within which it is defined. For the most part all PHP variables only have a single scope. This single scope spans included and required files as well. For example:

PHP中变量的范围Scope在它被定义的语境之内。对于绝大部分PHP变量来说只有一个范围,并且这个返回会被带入带include和require的文件里边。

[PHP]

$a = 1;
include ‘b.inc’;

[/PHP]

Here the $a variable will be available within the included b.inc script. However, within user-defined functions a local function scope is introduced. Any variable used inside a function is by default limited to the local function scope. For example:

上面代码中的$a变量可以在b.inc脚本中使用,然后再用户自定义函数里,局部函数范围local function scope被引入。任何在函数内部使用的变量,默认限制在局部函数范围内。

[PHP]

$a = 1; /* global scope */

function Test()
{
echo $a; /* reference to local scope variable */
}

Test();

[/PHP]

这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值。你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能不小心就改变了一个全局变量。PHP 中全局变量在函数中使用时必须申明为global。In PHP global variables must be declared global inside a function if they are going to be used in that function.可以理解为,如果你想在函数内部使用函数外部的变量,你必须要在函数内部使用global将其声明为全局变量。

[PHP]

$a = 1;
$b = 2;

function Sum()
{
global $a, $b;
$b = $a + $b;
}

Sum();//如果函数没有调用的话,则不会影响结果
echo $b;

[/PHP]

在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:

[PHP]

$a = 1;
$b = 2;

function Sum()
{
$GLOBALS[‘b’] = $GLOBALS[‘a’] + $GLOBALS[‘b’];
}

Sum();
echo $b;

[/PHP]

$GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。以下范例显示了超全局变量的用处,并且下边这个例子也详细说明了预定义变量和超级预定义全局变量有什么区别。超级预定义变量可以直接在函数内部使用。不需要事先经过global一下。

[PHP]

function test_global()
{
// 大多数的预定义变量并不 “super”,它们需要用 ‘global’ 关键字来使它们在函数的本地区域中有效。
global $HTTP_POST_VARS;
echo $HTTP_POST_VARS[‘name’];

// Superglobals 在任何范围内都有效,它们并不需要 ‘global’ 声明。Superglobals 是在 PHP 4.1.0 引入的。
echo $_POST[‘name’];
}

[/PHP]

赞(0)
未经允许不得转载:锐想 » PHP变量范围
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限