关于php的普通赋值和引用赋值

来源:互联网 发布:淘宝上的祛湿茶哪个好 编辑:程序博客网 时间:2024/05/16 17:52

1.除了对象之外,其它数据类型的普通赋值可以理解为是复制一份数据,但其实并不是正真意义上的复制。

2.php写时拷贝
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
通俗的讲
1:如果有下面的代码

$a = 'abc';$b=$a;

其实此时ab都是指向同一内存地址而并不是ab占用不同的内存
2:如果在上面的代码基础上再加上如下代码

$a = 'efg';

由于ab所指向的内存的数据要重新写一次了,此时Zend核心会自动判断自动为ba的数据拷贝,重新申请一块内存进行存储。

3.php的引用和C的指针是有区别的,php的引用:不同的名字访问同一个变量内容。

4.自php5起,对象的普通传递默认就是引用传递,如果不想引用传递,就使用clone。

5.对于引用传递的情况,unset原变量不会影响引用的变量,但是将原变量设置为null,那么引用的变量也为null

0 0
原创粉丝点击