php引用变量是什么?php引用变量的实例讲解
内容导读
收集整理的这篇技术教程文章主要介绍了php引用变量是什么?php引用变量的实例讲解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1786字,纯文字阅读大概需要3分钟。
内容图文
php引用变量是什么?如何定义引用变量?本篇文章将从内存空间上简述PHP中引用变量的基本概念、工作方式,以及一个常见的实例。概念
什么是引用变量,在PHP当中,用什么符号定义引用变量?
不同的名字访问同一个变量内容,使用&表示。
COW(copy on write)
内存优化的常见手段,在php中也采用了这种方式来优化内存。
写时复制,即只有当对其中一个或多个变量进行写操作的时候,才会复制一份内存,对其内容进行修改。
在PHP中使用memory_get_usage()观察内存变化
演示
未使用&(引用变量)
$a = range(0,1000); var_dump(memory_get_usage()); $b = $a;` var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
运行结果:
内存在第一次和第二次并没有太大的差异,第三次产生较大差异
使用 &
$a = range(0,1000); var_dump(memory_get_usage()); $b = &$a; var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
运行结果:
在使用引用传值内存解析分析:
$a
被赋值时在内存中占据A内存空间,$b=&$a
时$b
指向同一内存空间,当$a
发生改变时$b
所占据的内存空间会跟随$a
变化
unset
unset()
只会取消引用不会销毁空间
$a=1;$b=&$a;unset($b);echo $a;
输出结果:1
内存空间分析:
$a被赋值 $b=&$a之后$a与$b直行同一内存空间,当unset($b)时取消了$b对$a的引用,使$b不在指向$a的内存空间
题外话
对象本身就是引用传递
class Person{ public $name="zhangsan";}$p1 =new Person;xdebug_debug_zval('p1');$p2 =$p1;xdebug_debug_zval('p1');$p2->name="lisi";xdebug_debug_zval('p1');
运行结果:
结果分析:
对象被实例后经引用传递之后$p1
$p2
指向的始终是同一内存空间
案例
<?php $data = ['a', 'b', 'c']; foreach($data as $key => $val) { $val = &$data[$key]; } var_dump($data);
写出如上程序的输出结果?
程序运行时,每一次循环结束后变量$data的值是什么?
程序执行完成后,变量$data的值是什么?
内存变化及解析:
相关推荐:
php变量引用与对象引用详解介绍_PHP教程
php变量引用与对象引用详解介绍
以上就是php引用变量是什么?php引用变量的实例讲解的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的php引用变量是什么?php引用变量的实例讲解全部内容,希望文章能够帮你解决php引用变量是什么?php引用变量的实例讲解所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。