PHP变量作用域与地址引用问题解析
本文导语: 本节主要内容: PHP变量作用域以及地址引用问题。 一,php作用域的概念: 在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围。 这个可以访问的范围称为作用域。 主要包括:局部变量、...
本节主要内容:
PHP变量作用域以及地址引用问题。
一,php作用域的概念:
在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围。
这个可以访问的范围称为作用域。
主要包括:局部变量、全局变量、静态变量。
1、局部变量:就是在函数内声明的变量,他保存在内存的栈内,所以访问速度很快。仅在函数内有效。
2、全局变量:与局部变量相反,全局变量可以在程序的任何地方访问。只要在变量前面加关键字GLOBAL,就可以将其识别为全局变量。在整个php文件内有效。
3、静态变量:用static修饰只存在于函数作用域的变量,函数执行结束后其值并不消失。注:初始化后不能再次进行初始化,不能用表达式来赋值。
例子:
{
static $b=0;//申明静态变量,放在函数外部声明的话,在函数内部是用不到的
$b=$b+1;
echo $b;
}
test();//这条语句会输出 $b的值 为1
test();//这条语句会输出 $b的值 为2
注意:static $b=0 这一赋值操作只会在变量第一次被初始化的时候执行。
附A:类中静态成员和静态方法,差不多只是调用的时候统一使用类名或者self或者parent加::xxx,他们的作用域和这个一样,但是他的声明是在方法外部的
附B:js里面的作用域使:用var aa=‘xxx';在函数外面声明的就是全局变量(不管是否带有修饰符var)。在函数内部使用 var声明的是局部变量,不使用var修饰的是全局变量。
附C:关于PHP引用
PHP引用:就是在变量、函数或者对象前加&.php中的引用就是想用不同的名字访问同一个变量的内容。
1、变量的引用: