zoukankan      html  css  js  c++  java
  • 关于php的unset

    简介:这是关于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是如何进行的。

    爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

    http://biancheng.dnbcw.info/php/340518.html pageNo:7
  • 相关阅读:
    web网站性能优化
    pdf2htmlEX安装和配置
    java 连接数据库
    eclipse 配置jsp
    c语言中数组,指针数组,数组指针,二维数组指针
    java 泛型
    C语言中关键字auto、static、register、const、volatile、extern的作用
    redis使用教程
    测试php单例模式和静态访问,实例化访问的效率
    软件测试流程
  • 原文地址:https://www.cnblogs.com/ooooo/p/2245233.html
Copyright © 2011-2022 走看看