首页  >  文章  >  后端开发  >  关于php的unset

关于php的unset

WBOY
WBOY原创
2016-06-23 14:31:32702浏览

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是如何进行的。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn