PHP 四种变量范围比较
程序员文章站
2022-04-08 16:55:56
...
PHP 是一种较为松散的语言( Loosely Typed Language ),当我们声明一个变量时,不须指定变量的类型( type ),PHP 会自动根据指派给该变量的值来判断该变量的类型。虽然在声明变量时不须指定类型,但还有一项必须要指定的--变量的使用范围( scope)。PHP 有四种不同的使用范围:local、global、static、parameter,以下将分别介绍。
局部变量 (local variable)
在 function 中声明, 只能在声明的 function 中使用 (local scope)。不同的 function 中可声明相同名称的局部变量。
在声明变量function 结束时,局部变量也就不起作用了
声明时不需使用任何关键字(keyword)
$a = 5; // 全局变量
functionmyTest()
{echo $a; // 局部变量}
myTest();
上例不会输入任何内容,因为 $a 在function 中未指定值。
全局变量 (global variable)
在 function 外声明,除了 function 中的 script不能存取外,整个网页中的 script 都可以存取该变量( global scope )。若要在 function 中使用全局变量,需使用关键字 global,见下例:
在网页关闭时,全局变量就不起作用了
局部变量 (local variable)
在 function 中声明, 只能在声明的 function 中使用 (local scope)。不同的 function 中可声明相同名称的局部变量。
在声明变量function 结束时,局部变量也就不起作用了
声明时不需使用任何关键字(keyword)
$a = 5; // 全局变量
functionmyTest()
{echo $a; // 局部变量}
myTest();
上例不会输入任何内容,因为 $a 在function 中未指定值。
全局变量 (global variable)
在 function 外声明,除了 function 中的 script不能存取外,整个网页中的 script 都可以存取该变量( global scope )。若要在 function 中使用全局变量,需使用关键字 global,见下例:
在网页关闭时,全局变量就不起作用了
$a = 5; $b = 10; functionmyTest() { global $a,$b;//注意这行 $b = $a +$b; } myTest(); echo $b;
上例输出 15。
global 变量一旦声明之后,PHP 会将其放置在 $GLOBALS[index] 这个 array 中,其中 index 就是变量的名称。我在可以从 function 内存取这个 array,也可以直接指定值给 array 中的某个元素来改变其值。我们将上例改写如下:
$a = 5; $b = 10; functionmyTest() { $GLOBALS['b']= $GLOBALS['a'] + $GLOBALS['b']; } myTest(); echo $b;
静态变量 (static variable)
如前面所说,局部变量在函数结束时就会不起作用。不过有时候,当我们希望某局部变量不因函数结束而失效,我们可以在第一次声明该区域变量前,加上关键字-- static。
static$rememberMe;
如此一来,每次调用该函数时,此变量都会包含上一次调用函数时所得到的值。
要注意的是:静态变量仍是一种局部变量。
参数 (parameter,或称 argument)
参数指的是一种调用函数时传入的局部变量。其会在函数声明时的参数列 (parameter list) 中被声明。
functionmyTest($para1,$para2,...)//在小括号中声明
{// 函数源程序}
以上就是PHP 四种变量范围比较的详细内容,更多请关注其它相关文章!
上一篇: Laravel5.2 对后台用户ACL权限管理没有效果
下一篇: 了解php的变量范围