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
  • 相关阅读:
    001 云开发基础
    HttpClient 调用外部接口(简单实用)
    MD5加密(简单实现_可自行扩展)
    SAA C02考点梳理
    支配树
    CF1320E 题解
    dp套dp
    20210705模拟赛总结
    20210703模拟赛
    20210629模拟赛总结
  • 原文地址:https://www.cnblogs.com/ooooo/p/2245233.html
Copyright © 2011-2022 走看看