php - 多个变量指向同一个引用($b = &$a)
2017-06-02 11:51
274 查看
引用是什么?
引用就是多个变量指向同一个内存区域地址。如我们经常用的实例一个类,就是内存中开辟了一个区域存储实例的类,实例赋值给变量就是让这个变量指向这个内存区域。
多个变量指向同一个引用有什么好处?
节约了内存空间,多个变量指向同一个内存地址,在调用的时候多个变量都是指向的同一个内存地址。
多个变量指向同一个引用的缺点
要注意使用安全,即是由于多个变量都是指向的同一个内存地址,其中一个变量更改了某个属性,其它的变量调用的时候都是用的已经更改的实例。
在php 中我们为一个变量赋值的时候会在内存中开辟一个区域存储该值。那么我们将这个变量赋值给另一个变量的时候会在内存中重新开辟一个区域去存储改值吗? 我做了如下实验
看到这里 不知道你理解了没有,创建的变量
那么,我们怎么才能让
我更改了一下变量的名字。方便测试发现区别。在这里我们可以看到
前面我们实验的对象是基本字符串,现在我们来看下类是否遵从这个规则
我这里并没有&符号指定
php 的引用我觉得没有 java的好用,也许是这门语言本身还在发展,很多处理还没有那么方便完善。 java初去基本数据类型(int、long、byte、short、char、boolean、float、double等),两个变量赋值都是指向同一个内存地址,而且不用你特意去指定。
引用就是多个变量指向同一个内存区域地址。如我们经常用的实例一个类,就是内存中开辟了一个区域存储实例的类,实例赋值给变量就是让这个变量指向这个内存区域。
多个变量指向同一个引用有什么好处?
节约了内存空间,多个变量指向同一个内存地址,在调用的时候多个变量都是指向的同一个内存地址。
多个变量指向同一个引用的缺点
要注意使用安全,即是由于多个变量都是指向的同一个内存地址,其中一个变量更改了某个属性,其它的变量调用的时候都是用的已经更改的实例。
在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引用&符号详解——————给变量起小名
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php引用(&)变量引用,函数引用,对象引用和参数引用用法
- php的引用(就是在变量或者函数、对象等前面加上&符号)
- PHP 引用“&“之变量引用,函数引用,对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php引用(&)变量引用,函数引用,对…
- PHP中指向对象的变量是引用变量
- PHP中指向对象的变量是引用变量
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用变量&的用法
- php中引用&的真正理解-变量引用、函数引用、对象引用
- PHP源码分析-变量的引用计数、写时复制(Reference counting & Copy-on-Write)
- php中引用&的真正理解-变量引用、函数引用、对象引用
- ui控件的属性一般都是weak,但是内部变量的属性都是强引用,一般我们都是创建一个内部变量,然后让控件引用属性指向内变量
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用