php 多个变量指向同一个引用($b = &$a)用法分析
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-22 14:10:02 浏览: 评论:0
本文实例讲述了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等),两个变量赋值都是指向同一个内存地址,而且不用你特意去指定。
Tags: php变量 $b=&$a
相关文章
- ·php变量的引用传值详细教程(2014-01-03)
- ·PHP 中变量 常量的定义与用法(2014-08-02)
- ·php extract()函数把数据中变量转换成php变量(2014-09-16)
- ·PHP不用第三个变量交换两个变量的值的方法总结(2015-04-13)
- ·PHP中变量引用与变量销毁机制详解(2015-12-10)
- ·PHP引用符&的使用方法汇总(2015-12-12)
- ·php变量及常量(2015-12-12)
- ·PHP变量的声明及变量的命名规则(2016-08-22)
- ·PHP变量详解和定义变量名的方法(2016-08-24)
- ·php中变量知识的详细介绍(2020-01-15)
- ·浅谈PHP变量的8种类型以及弱类型(2020-04-06)
- ·PHP中判断变量为空的几种方法小结(2020-06-28)
- ·浅谈PHP变量作用域以及地址引用问题(2020-08-17)
- ·PHP的变量类型和作用域详解(2020-10-27)
- ·PHP变量赋值、代入给JavaScript中的变量(2021-06-05)
- ·深入理解PHP变量的值类型和引用类型(2021-06-20)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)