How PHP Reference works?
来源:互联网 发布:数据库系统实现 epub 编辑:程序博客网 时间:2024/06/08 03:33
简单的看一下php reference 是如何工作的
<?php
/* 图片为内存变化图
______________________________
|pointer | value | variable |
-----------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | NULL | --- |
| 4 | NULL | --- |
| 5 | NULL | --- |
------------------------------------
创建一些变量 */
$a=10;
$b=20;
$c=array ('one'=>array (1, 2, 3));
/* 查看内存
_______________________________
|pointer | value | variable's |
-----------------------------------
| 1 | 10 | $a |
| 2 | 20 | $b |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] |
------------------------------------
do */
$a=&$c['one'][2];
/* 查看内存
_______________________________
|pointer | value | variable's |
-----------------------------------
| 1 | NULL | --- | // $a 的值被销毁并且 pointer free
| 2 | 20 | $b |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] ,$a | // $a 现在在这里
------------------------------------
do */
$b=&$a; // "$c['one'][2]" 和 "$a" 为同一pointer.
/* 查看内存
_________________________________
|pointer | value | variable's |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- | //$b 的值被销毁并且 pointer free
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 |$c['one'][2] ,$a , $b | // $b 现在在这里
---------------------------------------
next do */
unset($c['one'][2]);
/* 查看内存
_________________________________
|pointer | value | variable's |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $a , $b | // $c['one'][2] 被销毁
---------------------------------------
next do */
$c['one'][2]=500; //now it is in array
/* 查看内存
_________________________________
|pointer | value | variable's |
--------------------------------------
| 1 | 500 | $c['one'][2] |
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $a , $b | //这个指针正在被使用
---------------------------------------
$c['one'][2]=&$a;
unset($a);
unset($b);
/* 查看内存
_________________________________
|pointer | value | variable's |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] | //$c['one'][2] 被返回, $a,$b 被销毁
--------------------------------------- ?>
- How PHP Reference works?
- ARC How the strong reference works
- How Internet EDI Works
- How E-mail Works
- How E-mail Works
- How Google Works
- How DES works
- How Google Works
- How Google Map Works
- How NAT Works
- How 4GT Works
- How PAE X86 Works
- How Digital Photography Works
- How Tomcat Works 1
- How Tomcat Works 2
- Books - How Tomcat works
- How Tomcat Works 5
- How Tomcat Works 9
- isql plus 简介
- Mysql的日志类型与设置。
- [推荐] “赢在中国”点评人给80后年轻人的30个忠告
- 特别关注:OA选型透析原则、本质和易入误区
- SAP 内存管理
- How PHP Reference works?
- InstallShield制作的打包程序——代码示例
- 如何选择网店系统
- 技术人员的最终出路(转)
- UML图简介
- 用SQL语句从aspnet_profile表里取用户的Profile值
- dom4j处理xml_Schema
- Sniffer抓包中文教程
- 设置某OU下用户只能浏览本OU下发布的打印机