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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值