前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php 多个变量指向同一个引用($b = &$a)用法分析

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

作者头像
砸漏
发布2020-10-20 14:28:49
2K0
发布2020-10-20 14:28:49
举报
文章被收录于专栏:恩蓝脚本

本文实例讲述了php 多个变量指向同一个引用(b = &

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

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

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

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

代码语言:javascript
复制
<?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 都指向一个引用呢? 查了下资料 如下方法 让两个变量指向同一个内存地址

代码语言:javascript
复制
<?php
$a = "123";
$b = &$a;
echo $b."<br / ";
$a = "456";
echo $b;
/**
 * 运行结果如下
 * 123
 * 456
 */
? 

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

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

代码语言:javascript
复制
<?php
class Demo
{
  public $demo = "aaaa";
}
$demo1 = new Demo();
$demo2 = $demo1;
echo $demo2- demo . "<br / ";
$demo1- demo = "bbbb";
echo $demo2- demo . "<br / ";
/**
 * 运行结果
 * aaaa
 * bbbb
 */
? 

我这里并没有&符号指定

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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档