<sup id="sjju3"><noscript id="sjju3"></noscript></sup>
    <big id="sjju3"></big>

  • <blockquote id="sjju3"></blockquote>
    <blockquote id="sjju3"></blockquote>

      <td id="sjju3"></td>

      <big id="sjju3"></big>
        <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
      1. 详解PHP变量传值赋值和引用赋值变量销毁

         更新时间:2019年03月23日 14:56:20   作者:html55   我要评论

        这篇文章主要介绍了PHP变量传值赋值和引用赋值变量销毁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

        本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下

        <?php
           $a = 100;
           $b = 200;
           var_dump($a,$b); //int(100) int(200)
         ?>

        php中,上面的代码,变量是怎么存放的呢?

        上面的代码变动下,将变量b赋值给变量a,会发生什么?

        <?php
          $a = 100;
          $b = 200;
          $a = $b;/*多了这个*/
          var_dump($a,$b); //int(200) int(200)
        ?>

        问题来了,$a = $b,那?#35789;?#23558;变量a的指针指向了变量b指针所指向的位置?还是变量a指向的位置的值变了?

        引用赋值和上面传值赋值不同,引用赋值是两个变量指向一个地方,一旦这样,一改俱改。

        怎么引用赋值呢?变量名前加&即可,

        $a = &$b;

        这样赋予变量a的就不仅仅是变量b的值,而是变量b的地址,变量a和变量b共同指向一个地址。

        <?php
          $a = 100;
          $b = 200;
          $a = &$b;
          var_dump($a,$b); //int(200) int(200)
          /*变量b引用赋值给变量a后,ab指向同一个地址,将会一改俱?#27169;?#22914;下:*/
          $a =500; 
          var_dump($a,$b);//int(500) int(500) 一改俱改
          $b = 700;
          var_dump($a,$b);//int(700) int(700)  一改俱改
        ?>

        <?php
        /*理解下面的话*/
        
        $a = 100; 
        //变量a赋值int 100 ,100是基础数据类型,不是变量,是存在变量指向位置的
        
        $a = $b;
        //变量b的值 赋值 给变量a,变量a,b各有各的指向,执行之后,各是各的。
        
        $a = &$b;
        //变量b的值的地址 赋值给变量 a ,变量a,b共用一个地?#25918;叮?#19968;改俱?#27169;?
        
        
        ?>
        <?php
        /*
        
        
        php中unset()是用来销毁变量的,但很多时候,unset()?#35805;?#21464;量给销毁了,
        内存中存放的该变量的值仍然没有销毁,也就是没能达到我们想要的释放内存的效果。
        这里可以用 变量=null 的方法来释放其内存
        
        unset也会释放内存的情况
        
        1. 在变量值所占空间超过255字节长的时候,unset(变量)才会释放内存
        2. 只有当指向该值的所有变量都被销毁后,地址才会被释放(比如$a,$b都指向该值,仅仅unset($a);是不释放的,$b还是正常存在的)(也要执行1的判断)
        
        
        
         */
        
        
        
        
          $a = 200;
          $b = &$a;
          unset($a);
          var_dump($a,$b); //NULL int(100)
        ?>

        上面的代码,执行到unset($a)时候,就是将变量a的指向断开,同时将变量a扔出花名册,从下图可以看出,对变量b是没有影响的。

        但是,如果用$a = null;这种方式销毁变量时,将会有如下影响:

        <?php
          $a = 100;
          $b = &$a;
          $a = null;
          var_dump($a,$b); //NULL NULL
        ?>

        这种方式,释放了内存,但是共用一个地址的另一个变量也受到了影响。

        看看这两种方式在数组上的应用:

        <?php
          $aaa = array(
            'a'=>1,
            'b'=>2
          );
          unset($aaa['a']);
          print_r($aaa); //Array ( [b] => 2 ) ,用unset,数组中这一项不存在了
          
          
          
          $bbb = array(
            'a'=>1,
            'b'=>2
          );
          $bbb['a'] = null;
          print_r($bbb); //Array ( [a] => [b] => 2 ) ,用 = null,数组中这一项还存在,只是为空了
        ?>

        以上所述是小编给大家介绍的PHP变量传值赋值和引用赋值变量销毁详解整合,希望对大家有所帮助,如果大家有任?#25105;?#38382;请给我留言,小编会及时回复大家的。在此也非常?#34892;?#22823;家对脚本之家网站的支持!

        相关文章

        • php模拟post提交数据的方法

          php模拟post提交数据的方法

          这篇文章主要介绍了php模拟post提交数据的方法,实例分析了socket方法模拟post提交数据的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
          2015-02-02
        • PHP实?#20540;?#22238;溯算法示例

          PHP实?#20540;?#22238;溯算法示例

          这篇文章主要介绍了PHP实?#20540;?#22238;溯算法,结合具体实例形式分析了php回溯算法的实现步骤与使用方法,涉及字符串与数组的递归、遍历、运算等相关操作技巧,需要的朋友可以参考下
          2017-08-08
        • 解析php常用image图像函数集

          解析php常用image图像函数集

          本篇文章是对php中常用的image图像函数集进行了详细的分析介绍,需要的朋友参考下
          2013-06-06
        • PHP 内存缓存加速功能memcached安装与用法

          PHP 内存缓存加速功能memcached安装与用法

          memcached 简介在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或?#23548;?#20102;解过,只知道它是一个很不错的东东。这里简单介绍一下。
          2009-09-09
        • PHP的时间戳与具体时间转化的简单实现

          PHP的时间戳与具体时间转化的简单实现

          下面小编就为大家带来一篇PHP的时间戳与具体时间转化的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
          2016-06-06
        • php foreach 使用&(与运算符)引用赋值要注意的问题

          php foreach 使用&(与运算符)引用赋值要注意的问题

          foreach 通过在 $value 之前加上 & 很容易就能修改数组的单元,在 foreach 使用引用时要注意了。也可以在处理完后立即断开引用关系,后面就不会有上述情况了。
          2010-02-02
        • PHP,ASP.JAVA,JAVA代码格式化工具整理

          PHP,ASP.JAVA,JAVA代码格式化工具整理

          经常访问脚本之家的朋友,可以使用下面的工具,进行代码的格式化。更利于学习。
          2010-06-06
        • ThinkPHP模型详解

          ThinkPHP模型详解

          这篇文章主要介绍了ThinkPHP模型详解的相关资料,需要的朋友可以参考下
          2015-07-07
        • PHP使用Pthread实?#20540;?#22810;线程操作实例

          PHP使用Pthread实?#20540;?#22810;线程操作实例

          这篇文章主要介绍了PHP使用Pthread实?#20540;?#22810;线程操作的方法,以完整实例形式分析了php多线程的创建及使用相关技巧,需要的朋友可以参考下
          2015-11-11
        • PHP屏蔽过滤指定关键?#20540;?#26041;法

          PHP屏蔽过滤指定关键?#20540;?#26041;法

          这篇文章主要介绍了PHP屏蔽过滤指定关键?#20540;?#26041;法,包含了字符串的过滤处理与数组的遍历等技巧,非常具有实用价值,需要的朋友可以参考下
          2014-11-11

        最新评论

        2018白小姐一肖中特马
        <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
        <big id="sjju3"></big>

      2. <blockquote id="sjju3"></blockquote>
        <blockquote id="sjju3"></blockquote>

          <td id="sjju3"></td>

          <big id="sjju3"></big>
            <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
          1. <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
            <big id="sjju3"></big>

          2. <blockquote id="sjju3"></blockquote>
            <blockquote id="sjju3"></blockquote>

              <td id="sjju3"></td>

              <big id="sjju3"></big>
                <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>