详解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,那么是将变量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 Primary script unknown 解决方法总结

    PHP Primary script unknown 解决方法总结

    在本篇文章里小编给大家整理的是关于PHP Primary script unknown 终极解决方法以及相关知识点,有需要的朋友们参考学习下。
    2019-08-08
  • php mysql Errcode: 28 终极解决方法

    php mysql Errcode: 28 终极解决方法

    php mysql Errcode: 28 终极解决方法,碰到这类问题的朋友可以参考下。
    2009-07-07
  • linux下的php-fpm参数配置介绍与参数优化说明

    linux下的php-fpm参数配置介绍与参数优化说明

    本文主要讲解了在linux下php-fpm一些重要参数的中文详细说明,并详细介绍了php-fpm关于性能方面的参数优化介绍
    2017-12-12
  • php简单生成随机数的方法

    php简单生成随机数的方法

    这篇文章主要介绍了php简单生成随机数的方法,该功能可用于生成验证码,涉及php字符串及mt_rand方法的使用技巧,需要的朋友可以参考下
    2015-07-07
  • PHP ADODB实现分页功能简单示例

    PHP ADODB实现分页功能简单示例

    这篇文章主要介绍了PHP ADODB实现分页功能,结合实例形式分析了php使用ADODB实现分页功能相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • PHP取得一个类的属性和方法的实现代码

    PHP取得一个类的属性和方法的实现代码

    PHP取得一个类的属性和方法的实现代码,需要的朋友可以参考下。
    2011-05-05
  • PHP实现过滤各种HTML标签

    PHP实现过滤各种HTML标签

    在做项目的过程中,我们经常需要用到过滤一些html标签来实现提高数据的安全性,其实就是删除那些对应用程序有潜在危害的数据。它用于去除标签以及删除或编码不需要的字符。
    2015-05-05
  • PHP实现找出链表中环的入口节点

    PHP实现找出链表中环的入口节点

    这篇文章主要介绍了PHP实现找出链表中环的入口节点,涉及php针对环形链表的遍历、查找、计算等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • PHP结合Ffmpeg快速搭建流媒体服务的实践记录

    PHP结合Ffmpeg快速搭建流媒体服务的实践记录

    这篇文章主要给大家介绍了关于使用PHP结合Ffmpeg快速搭建流媒体服务的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 记录一次排查PHP脚本执行卡住的问题

    记录一次排查PHP脚本执行卡住的问题

    最近通过监控发现服务器中的一台机器异常,通过排除发现可能是php执行脚本出现了问题,于是通过一步步排查,最终解决了这个问题,下面这篇文章主要是记录了一次排查PHP脚本执行卡住的问题,需要的朋友可以参考下。
    2016-12-12

最新评论