关于php的unset
程序员文章站
2023-12-30 09:55:40
...
php的unset很特别。
简单的说:
参考php手册:
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是如何进行的。