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


Posted in PHP onMarch 23, 2019

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

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

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

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

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

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

问题来了,$a = $b,那么是将变量a的指针指向了变量b指针所指向的位置?还是变量a指向的位置的值变了?

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

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

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

$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变量传值赋值和引用赋值变量销毁

<?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防注入漏洞过滤函数代码
Apr 11 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
自制PHP框架之路由与控制器
May 07 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
PHP实现的curl批量请求操作示例
Jun 06 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 #PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 #PHP
Laravel如何自定义command命令浅析
Mar 23 #PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 #PHP
PHP中命名空间的使用例子
Mar 22 #PHP
PHP SESSION机制的理解与实例
Mar 22 #PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 #PHP
You might like
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
php获取操作系统语言代码
2013/11/04 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
Python如何合并多个字典或映射
2020/07/24 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
读群众路线心得体会
2014/03/07 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
Django实现翻页的示例代码
2021/05/24 Python
Python django中如何使用restful框架
2021/06/23 Python
Python中的 Set 与 dict
2022/03/13 Python