关于php的unset
来源:互联网 发布:影视制作软件下载 编辑:程序博客网 时间:2024/06/07 01:12
关于php的unset
php的unset很特别。
简单的说:
参考php手册:
<?php
/* Imagine this is memory map
______________________________
|pointer | value | variable |
-----------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | NULL | --- |
| 4 | NULL | --- |
| 5 | NULL | --- |
------------------------------------
Create some variables */
$a
=10;
$b
=20;
$c
=
array
(
'one'
=>
array
(1, 2, 3));
/* Look at memory
_______________________________
|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];
/* Look at memory
_______________________________
|pointer | value | variable's |
-----------------------------------
| 1 | NULL | --- | //value of $a is destroyed and pointer is free
| 2 | 20 | $b |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] ,$a | // $a is now here
------------------------------------
do */
$b
=&
$a
;
// or $b=&$c['one'][2]; result is same as both "$c['one'][2]" and "$a" is at same pointer.
/* Look at memory
_________________________________
|pointer | value | variable's |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- | //value of $b is destroyed and pointer is free
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 |$c['one'][2] ,$a , $b | // $b is now here
---------------------------------------
next do */
unset(
$c
[
'one'
][2]);
/* Look at memory
_________________________________
|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] is destroyed not in memory, not in array
---------------------------------------
next do */
$c
[
'one'
][2]=500;
//now it is in array
/* Look at memory
_________________________________
|pointer | value | variable's |
--------------------------------------
| 1 | 500 | $c['one'][2] | //created it lands on any(next) free pointer in memory
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $a , $b | //this pointer is in use
---------------------------------------
lets tray to return $c['one'][2] at old pointer an remove reference $a,$b. */
$c
[
'one'
][2]=&
$a
;
unset(
$a
);
unset(
$b
);
/* look at memory
_________________________________
|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] is returned, $a,$b is destroyed
--------------------------------------- ?>
I hope this helps.
如此便能够说明php 的 unset是如何进行的。
引用地址:http://www.cnblogs.com/windk/archive/2011/07/06/2099474.html
0 0
- 关于PHP的unset:
- 关于php的unset
- 关于php的unset失败的问题
- php的unset机制
- php中对象的unset。
- php的unset()与引用
- php unset
- PHP的unset()函数的实际效果
- PHP--isset()和unset()函数的用法
- PHP unset函数的使用
- PHP的unset究竟会不会释放内存?
- PHP的unset究竟会不会释放内存?
- php的unset函数何时释放内存
- mongodb关于$unset的键删操作
- php 之unset
- php之unset()详解
- php unset函数执行
- php 函数unset
- c++学习笔记(04)
- MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)
- Linux 下hosts文件详解
- 电阻屏驱动设计---ok6410
- RUtils -- 建立在Rserve之上的Java与R语言通信工具集
- 关于php的unset
- Windows虚拟内存的使用(一)
- 3d plane
- Restore IP Addresses---medium
- 事件是在线程同步中最常用的一种同步对象,可手动自动状态。
- 开篇
- BLE协议栈之读取CC2541的MAC地址
- nyoj-664-数字整除
- Kruskal算法