这篇文章给大家介绍的内容是关于 什么是php引用变量?php中引用是如何实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
概念:
引用:在PHP中,不同的变量名字访问同一个变量的内容,成为引用,用&符号表示。
引用工作原理:
(1)PHP在内存中存储的原理:
立即学习“PHP免费学习笔记(深入)”;
<?php
$a = range(1, 100); $b = $a;
?>因为PHP中存在COW(Copy On Write)机制,所以
a; 以上代码在内存中可表示为下图:
只有当对
a的存储,此时会重新开辟一个空间;这就是PHP的COW机制。即:
<?php
$a = range(1, 100);
$b = $a;
$a = range(1, 100);
?>这样虽然没有改变
a。可以用PHP函数 memory_get_usage() 查看内存使用情况用以证明。
(2)PHP中引用的实现原理
自从百度屏蔽淘宝客网站、淘宝抛弃淘宝客之后,个人站长集体陷入了恐慌之中。此时,什么值得买网的异军突起引起了广大个人站长的极大关注。做一个什么值得买一样的导购网站成了众多个人站长的一致心愿! TP-COUPON 导购系统 即是让个人站长实现此心愿的绝佳选择! 欢迎个人站长选用。V1.1版 更新记录:1.修正请求时查询淘宝店铺错误的bug2.删除一些无用的代码
<?php
$a = range(1, 100);
$b = &$a;
?>此时因为有引用(&),则在内存中
a最开始分配的内存,并且是不会改变的,此时
然后如果此时改变$a的值:
<?php
$a = range(1, 100);
memory_get_usage();
$b = &$a;
memory_get_usage();
$a = range(1,1000);
memory_get_usage();?>
可以看到内存中不会重新开辟一块空间,因为引用是将这块地址永远的分配给了
b,所以改变
a和$b的值都会改变。也可用memory_get_usage()函数进行查看。
(3)PHP中的zval结构体(变量容器)
我们知道PHP中的变量都是存储在zval结构体中的,引用也可以通过查看zval结构体中的存储情况去查看。
<?php
$a = range(1, 100);
xdebug_debug_zval('a');
$b = &$a;
?>在使用xdebug_debug_zval();函数需要安装PHP的xdebug扩展。
相关文章推荐:










