详解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 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 PHP
PHP变量的作用范围实例讲解
Dec 22 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
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
动态加载js的几种方法
2006/10/23 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
Python在不同目录下导入模块的实现方法
2017/10/27 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
2020/05/11 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
新书吧创业计划书
2014/01/31 职场文书
税务会计岗位职责
2014/02/18 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2014年政教处工作总结
2014/12/20 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python