PHP变量的范围与地址引用问题的探讨

行动范围的概念:

一个变量可以在PHP脚本中的任何位置声明,但是声明变量的位置会极大地影响访问变量的范围。

常用的主要有:局部变量、全局变量、静态变量。

1。局部变量:函数中声明的变量,存储在内存堆栈中,因此访问速度非常快,它只在函数中有效。

2。全局变量:与局部变量相反,全局变量可以在程序的任何地方访问。只要在变量之前添加关键字全局,它就可以被识别为全局变量。它在整个PHP文件中是有效的。

3、静态变量:修改函数域中只存在于静态的变量,在函数执行后该值不会消失。注意:初始化不能再次初始化,不能用于赋值。

复制代码代码如下所示:
功能测试()
{
静态$ = 0;声明静态变量,关于外部语句的函数,在函数中不使用。

美元= $ + 1;

回声$;
}
(测试);这个语句将输出$的值是1。
(测试);这个语句将输出$的值是2。


注意:静态的B = 0赋值操作只在变量首次初始化时执行。

答:类中的静态成员和静态方法几乎与调用类名或父或父类相同:xxx。他们的范围与此相同,但他的说法是不可行的。

附件的作用域允许使用var= xxx;全局变量在函数之外声明(不管是否使用修饰符var)。函数中var声明的使用是局部变量,而全局变量不由var修改。

附上C:参考

PHP引用是将PHP中的引用添加到变量、函数或对象中,该对象以不同的名称访问同一变量的内容。

1,对变量的引用:

复制代码代码如下所示:
$ =abc;

美元=美元;

$;

$

$ =EFG;

Echo $a; / / here the value of $a for the EFG so output EFG

echo $ B; / / EFG输出在这里


2,函数的地址调用

复制代码代码如下所示:
功能测试(美元)

{

$ = $ A + 100;

}

$ = 1;

1

测试(b);在这里传递给函数的B是变量B内容的内存地址,您可以通过改变函数中的$值来改变b的值。



101


三.函数返回的引用

复制代码代码如下所示:
功能测试()
{

静态$ = 0;声明静态变量

美元= $ + 1;

回声$;

返回$;

}

($ = test);此语句将输出$为1的值。

$ = 5;

($ = test);此语句将输出$为2的值。

($ = test);此语句将输出$为3的值。

$ = 5;

($ = test);此语句将输出$为6的值。


解析:美元=测试使用()是不实际的参考作用。只是复制函数的返回值为一个,不影响b.such美元的电话是从一个普通的电话没有什么不同。

PHP指定函数的引用返回$(=)测试模式,他将$变量的内存地址和$变量的内存地址指向相同的位置,也就是说,相当于$;

4。引用

复制代码代码如下所示:
$ = 1;

美元=美元;

unset(美元);

回声$;


解析:一个设置参考取消变量名和变量的内容之间的结合,但这并不意味着内容被破坏,其价值是真实的。

5、全球参考:当使用一个全局$ var声明一个变量,它实际上是一个引用一个全局变量。全球美元美元美元{ var = val全局'var};

6。对对象的引用:在对象的方法中,由$调用的对象是它被调用的引用。

注:在PHP中的地址不是由用户自己来实现的,而是通过Zend核心实现。PHP的引用采用了复制的原则,即除非发生写操作,否则指向同一地址的变量或对象将不会被复制。

复制代码代码如下所示:
$ = 1;

美元=美元;

a $和b指向相同的内存地址,而不是$ A和B占用不同的内存。

如果内存中的数据由一句$ = DSD:美元美元和B需要重写一次,Zend核心会自动判断它在这个时候,自动生成一个副本美元美元B数据和申请一个内存存储。