理解php赋值原理
来源:互联网 发布:centos开机自启动 编辑:程序博客网 时间:2024/06/06 13:04
PHP变量结构
PHP变量都放在一个zval结构中,它包含变量的值和相关信息
struct _zval_struct { zvalue_value value; /* value 变量值 */ zend_uint refcount__gc; /* variable ref count 记录了指向该变量的符号数量 */ zend_uchar type; /* active type 变量类型 */ zend_uchar is_ref__gc; /* if it is a ref variable 该变量是否为引用变量 */};
创建一个变量的时候,PHP会为这个变量分配一个zval结构,填入相应的值,然后将这个变量的名字和指向这个zval的指针填入一个数组中。当你获取这个变量的时候,PHP会通过查找这个数组,获得对应的zval
PHP变量赋值
安装xdebug之后使用函数xdebug_debug_zval显示”refcount”和”is_ref”的值
$a = 10;xdebug_debug_zval(‘a’);
结果显示:
$b= $a;xdebug_debug_zval(‘a’);
结果显示:
refcount=2说它被两个变量同时使用
$a = 1;xdebug_debug_zval(‘a’);
结果显示:
因此变量赋值后,在两个变量没有发生改变时,它们指向的是同一个zval结构。当其中一个变量发生改变的时候,才会分配新的内存空间
对变量调用了函数 unset()时,”refcount“就会减1
$a = 10;$b = $a;xdebug_debug_zval('a');unset($b);xdebug_debug_zval('a');
当refcount为0时,变量会被销毁
引用赋值
$a = 10;xdebug_debug_zval('a');$b = &$a;xdebug_debug_zval('a');
引用赋值两个变量指向同一个内存空间
0 0
- 理解php赋值原理
- 深入理解PHP原理之变量赋值
- php 赋值原理详解
- PHP底层赋值原理
- 理解PHP字符串原理
- 深入理解php的引用赋值
- 深入理解PHP中赋值与引用
- 深入理解PHP中赋值与引用
- PHP对象赋值测试帮助理解
- 理解PHP网页运行原理
- php运行原理如何理解
- 深入理解i++、++i以及赋值操作符原理
- 深入理解i++、++i以及赋值操作符原理
- 深入理解PHP对象赋值(没意思or有意思)
- 【PHP原理学习】之深入理解PHP原理之Opcodes
- 深入理解PHP原理之PHP脚本执行原理(1)
- 深入理解PHP原理之PHP脚本执行原理(2)
- 深入理解PHP原理之Opcodes
- Android-File存储j介绍及使用(第一章)
- IEEE conference 中出现的PDF字体嵌入的问题
- Rdlc在reportviewer中的全屏解决方案
- 文章标题
- mysql 与 java
- 理解php赋值原理
- 装饰器模式2
- javaweb云服务环境搭建
- 欢迎使用CSDN-markdown编辑器
- log4j 滚动日志 及 实现操作日志
- websocket 和SSL浅析
- traceroute的一点输出
- matlab保存文件夹下图片路径到txt文本
- 自定义view笔记