简介:这是关于php的unset的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=340518' scrolling='no'>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是如何进行的。