php 多个变量指向同一个引用($b = &$a)用法分析


Posted in PHP onNovember 13, 2019

本文实例讲述了php 多个变量指向同一个引用($b = &$a)用法。分享给大家供大家参考,具体如下:

引用是什么?
引用就是多个变量指向同一个内存区域地址。如我们经常用的实例一个类,就是内存中开辟了一个区域存储实例的类,实例赋值给变量就是让这个变量指向这个内存区域。

多个变量指向同一个引用有什么好处?
节约了内存空间,多个变量指向同一个内存地址,在调用的时候多个变量都是指向的同一个内存地址。

多个变量指向同一个引用的缺点
要注意使用安全,即是由于多个变量都是指向的同一个内存地址,其中一个变量更改了某个属性,其它的变量调用的时候都是用的已经更改的实例。

在php 中我们为一个变量赋值的时候会在内存中开辟一个区域存储该值。那么我们将这个变量赋值给另一个变量的时候会在内存中重新开辟一个区域去存储改值吗? 我做了如下实验

<?php
$d = "aaa";
$c = $d;
echo $c . "<br />";
$d = "bbb";
echo $c . "<br />";
/**
 * 执行结果是
 * aaa
 * aaa
 */
?>

看到这里 不知道你理解了没有,创建的变量$d 并为之赋初始值aaa 再将$d 赋值给$c,之后输出$c 然后更改$d的值,在输出$c。这个实验告诉我们,$d再给$c赋值的时候是在内存中重新开辟了一个区域的。

那么,我们怎么才能让$d和$c 都指向一个引用呢? 查了下资料 如下方法 让两个变量指向同一个内存地址

<?php
$a = "123";
$b = &$a;
echo $b."<br />";
$a = "456";
echo $b;
/**
 * 运行结果如下
 * 123
 * 456
 */
?>

我更改了一下变量的名字。方便测试发现区别。在这里我们可以看到 $b=&$a 其中&符号的作用就是让$b 指向的是$a的内存区域,而不是重新开辟一个区域。所以当更改$a的值的时候$b也会随着变化。

前面我们实验的对象是基本字符串,现在我们来看下类是否遵从这个规则

<?php
class Demo
{
  public $demo = "aaaa";
}
$demo1 = new Demo();
$demo2 = $demo1;
echo $demo2->demo . "<br />";
$demo1->demo = "bbbb";
echo $demo2->demo . "<br />";
/**
 * 运行结果
 * aaaa
 * bbbb
 */
?>

我这里并没有&符号指定$demo2必须指向$demo1 的内存区域,所以关于类,当一个实例变量赋值给另一个变量的时候默认就是两个变量指向同一个引用;

php 的引用我觉得没有 java的好用,也许是这门语言本身还在发展,很多处理还没有那么方便完善。 java初去基本数据类型(int、long、byte、short、char、boolean、float、double等),两个变量赋值都是指向同一个内存地址,而且不用你特意去指定。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中实现汉字转区位码应用源码实例解析
Jun 14 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
PHP多态代码实例
Jun 26 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
PHP7常量数组用法分析
Sep 26 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 #PHP
php array 转json及java 转换 json数据格式操作示例
Nov 13 #PHP
Yii框架学习笔记之应用组件操作示例
Nov 13 #PHP
Yii框架自定义数据库操作组件示例
Nov 11 #PHP
php接口隔离原则实例分析
Nov 11 #PHP
Yii框架布局文件的动态切换操作示例
Nov 11 #PHP
Yii框架模拟组件调用注入示例
Nov 11 #PHP
You might like
汉字转化为拼音(php版)
2006/10/09 PHP
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
js实现自定义路由
2017/02/04 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
vue实现评价星星功能
2020/06/30 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
python 装饰器重要在哪
2021/02/14 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
学生出入校管理制度
2014/01/16 职场文书
表彰会主持词
2014/03/26 职场文书
公司保密承诺书
2014/03/27 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
大学军训的体会
2014/11/08 职场文书
五一劳动节活动总结
2015/02/09 职场文书
2015年母亲节寄语
2015/03/23 职场文书
消防验收申请报告
2015/05/15 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
python 爬取天气网卫星图片
2021/06/07 Python