PHP中变量引用与变量销毁机制详解.doc

PHP中变量引用与变量销毁机制详解.doc

ID:50829219

大小:47.95 KB

页数:4页

时间:2020-03-15

PHP中变量引用与变量销毁机制详解.doc_第1页
PHP中变量引用与变量销毁机制详解.doc_第2页
PHP中变量引用与变量销毁机制详解.doc_第3页
PHP中变量引用与变量销毁机制详解.doc_第4页
资源描述:

《PHP中变量引用与变量销毁机制详解.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、PHP中变量引用与变量销毁机制详解  变量是php中一个非常重要的类型了,我们的有数据都通过变量或常量来进行操作,下文来看看变量引用与变量销毁吧。  在php中,符号"&"表示引用。  1、看看不引用的情况是这样子:  $a="helloworld";//定义一个变量,下面赋值给$b  $b=$a;//这一步没有在$a之前加符号&,像这样子"$b=&$a"。没有加&,实际上原理是会将变量$a复制拷贝一份,也就是内存中重新申请一个地址存储变量$b了  ps:在php中,使用"="直接赋值

2、,其实就是拷贝一份右边的变量给b,会生成一份内存空间,结果可能是同样的内容在内存中两份。在有些关于php性能方面提到,这样子会多占有内存空间。不过我接触中,大部分人没怎么注意,其实一般应用这样子用产生的显著差异并不明显。不会看到什么效果,其实我本人也没经常使用&进行引用,呵呵。只是我觉得,深入了解里面的实现原理,非常有必要。我喜欢关注原理性的东西。  2、使用符号&进行引用  $a="helloworld";  $b=&$a;  使用引用,php引擎不会拷贝一份变量,其实就是将指针指向了$a在

3、内存中的地址,$b中就是保存了这个指针。  所以使用引用的时候,把$b的值改变,$a也会跟着改变  比如:  代码如下  复制代码  $a="helloworld";  $b=&$a;  $b="testnewvalue";//把b的值改掉,a的值也会跟着改变  echo$a;//输出testnewvalue,因为改变了b的值也会改变a的值。  =====================================  经常在定义函数的时候看到像这样的情况:  functiontest(&$param)  

4、{  //函数定义的内容  $param++;  }  解释:$param前面带有引用,所以传入进来的参数并不会在内存中拷贝一份,而是直接对原来的内存空间进行引用。jiyuanedu.com所以:如果里对使用符号&传入进来的变量值进行修改了,那么也会改变原来的内存空间中的值。  做个测验如下:  代码如下  复制代码  $k=8;  test($k);  echo$k;//结果$k的值被函数里面改变了,输出9。  还会经常看到这样子调用函数:  $return=&test_func();  前面了解到

5、php引擎的机制是:=会把右边的内容拷贝一份给予左边的变量。所以使用&就是将函数的结果不会进行拷贝一份,实际上我的理解是把指针给了左边的变量。  什么是指针,以前学c语言中的概念。我的理解是就是:指针,指针,指向针(指南针,呵呵)。把指针看成是一个内存的地址容易理解点,计算机就知道去内存什么位置找数据了吧。这是浅显的理解,深入的我不会,呵呵。  总结:使用引用是为了减少内存资源的占用。  php手册中对引用的解释如下:  在PHP中引用意味着用不同的名字访问同一个变量内容。这并不像C的指针,替代的是,

6、引用是符号表别名。注意在PHP中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是Unix的文件名和文件本身——变量名是目录条目,而变量内容则是文件本身。引用可以被看作是Unix文件系统中的hardlink。  3、销毁变量的时候。并不会改变原来的值。  试验:$b=&$a;  既然改变$b的值,$a的值也跟着改变,假如把$b销毁掉(内存中不占用空间了,不是null,也不是值为""),$a的值是不是也会跟着被删掉呢?  其实国外有本php方面的书中专门提到了这

7、个机制。2年前看的。不是很记得了。原则是就是删除变量的时候,会自动拷贝。  其实这样子,就是为了避免把$b给删掉,造成把$a也给删掉的问题。  代码如下  复制代码  

8、号表中发现:我要删除的变量$b原来是引用了变量$a,这不好删除啊,因为一删除导致$a变量也没了,所以就先把$a变量拷贝一份后在删除$b变量。  关于php符号表:其实我的理解是,澳门新濠天地keelungedu.com运行中所有变量名称都记录在里面,php来维护,具体的数据当然是存储在内存中,php就是根据这个符号表去回收没有用到的变量空间的,释放内存空间)。去看看php的垃圾回收机制(释放不再使用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。