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 相关文章推荐
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
discuz的php防止sql注入函数
Jan 17 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
PHP浮点比较大小的方法
Feb 14 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 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写的serv-u的web申请账号的程序
2006/10/09 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
javascript 节点排序 2
2011/01/31 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python多线程并发及测试框架案例
2019/10/15 Python
python实现复制文件到指定目录
2019/10/16 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
房地产开发项目建议书
2014/05/16 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
毕业生学校组织意见
2015/06/04 职场文书
2015年教师节广播稿
2015/08/19 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android