牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-01-08 投稿人: 浏览次数:1250

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。