• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解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,那么是将变量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指向同一个地址,将会一改俱改,如下:*/
      $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共用一个地址哦!一改俱改!
    
    
    ?>
    ?php
    /*
    
    
    php中unset()是用来销毁变量的,但很多时候,unset()只把变量给销毁了,
    内存中存放的该变量的值仍然没有销毁,也就是没能达到我们想要的释放内存的效果。
    这里可以用 变量=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变量传值赋值和引用赋值变量销毁详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • 详解PHP的引用计数
    • php的对象传值与引用传值代码实例讲解
    • php传值和传引用的区别点总结
    • php 多个变量指向同一个引用($b = &$a)用法分析
    • php引用和拷贝的区别知识点总结
    • php中对象引用和复制实例分析
    • PHP实现无限极分类的两种方式示例【递归和引用方式】
    • PHP函数按引用传递参数及函数可选参数用法示例
    • PHP 引用的概念
    上一篇:laravel实现按时间日期进行分组统计方法示例
    下一篇:PHP实现支持CURL字符串证书传输的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解PHP变量传值赋值和引用赋值变量销毁 详解,PHP,变量,传值,赋值,