所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。
传值的话,如果是非对象,会传一个值的拷贝,对这个变量做任何改动都不影响原值。传引用或者传对象,是传真实的内存地址,对这个变量做的改动会影响原值。
代码如下 | 复制代码 |
function func1($a) { $a = $a + 1; } function func2(&$a) { $a = $a + 1; } $sample = 1; func1($sample); echo $sample; // 输出 1 $sample = 1; func2($sample); 9.echo $sample; // 输出 2 |
总结
在高中时老师告诉我们引用就是把内存地址给变量这样只要内存地址中发生变化而我们所财会的变量内容也会跟着变了,这个就有点像一个房子放了东西,我们都可以进入拿,只要东西变了我们进去看到的东西是一样的,而不是我把东西拿在手上,这样房里东西变了我这里不变了。