1.除了对象之外,其它数据类型的普通赋值可以理解为是复制一份数据,但其实并不是正真意义上的复制。
2.php写时拷贝
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
通俗的讲
1:如果有下面的代码
$a = 'abc';
$b=$a;
其实此时
a与
b都是指向同一内存地址而并不是
a与
b占用不同的内存
2:如果在上面的代码基础上再加上如下代码
$a = 'efg';
由于 a与 b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断自动为 b生产一个 a的数据拷贝,重新申请一块内存进行存储。
3.php的引用和C的指针是有区别的,php的引用:不同的名字访问同一个变量内容。
4.自php5起,对象的普通传递默认就是引用传递,如果不想引用传递,就使用clone。
5.对于引用传递的情况,unset原变量不会影响引用的变量,但是将原变量设置为null,那么引用的变量也为null