当前位置: 首页 > 后端技术 > PHP

【基础篇】PHP引用变量概述

时间:2023-03-30 01:40:43 PHP

本文主要从内存空间的角度简单介绍了PHP中引用变量的基本概念、工作方式和一个常用的demo实例。概念什么是参考变量?在PHP中,用什么符号来定义引用变量?不同的名称访问相同的变量内容,用&表示。COW(copyonwrite)是一种常见的内存优化方法,PHP中也使用这种方法来优化内存。Copy-on-write,即只有当其中一个或多个变量被写入时,才会复制一份内存并修改其内容。在PHP中使用memory_get_usage()观察内存变化Demounused&(referencevariable)$a=range(0,1000);var_dump(memory_get_usage());$b=$a;`var_dump(memory_get_usage());$一个=范围(0,1000);var_dump(memory_get_usage());运行结果:第一次和第二次没有太大区别,但是第三次??有很大的区别use&$a=range(0,1000);var_dump(memory_get_usage());$b=&$a;var_dump(memory_get_usage());$a=范围(0,1000);var_dump(memory_get_usage());运行结果:引用传值内存解析分析:$a赋值时占用内存中A的内存空间。当$b=&$a时,$b指向同一个内存空间。当$a发生变化时,$b占用的内存空间会跟随$a的变化unsetunset()只会解引用不会破坏空间$a=1;$b=&$a;unset($b);echo$A;输出结果:1内存空间分析:$a被赋值$b=&$a之后,$a和$b直接进入同一个内存空间。当unset($b)时,取消$b对$a的引用,使$b不再指向$a的内存空间。name="zhangsan";}$p1=newPerson;xdebug_debug_zval('p1');$p2=$p1;xdebug_debug_zval('p1');$p2->name="lisi";xdebug_debug_zval('p1');运行结果:结果分析:$p1$p2对象在被实例化后通过引用传递后始终指向同一个内存空间Case$val){$val=&$data[$key];}var_dump($data);写出上面程序的输出?程序运行时,每次循环结束后变量$data的值是多少?程序执行后,变量$data的值是多少?内存变化及分析:感谢您阅读本文。我希望这篇文章可以帮助你。有什么问题欢迎在评论区留言,谢谢