php变量 写时改变 写时复制

时间:2022-04-20 02:46:20

写时复制

$var = 1;

$var2 = $var; #此时$var2 与 $var 指向同一个zval refcount = 2;

$var = 2; # 此时$val 改变 所以 $var 与 $var2 指向的zval不能相同了 给$var 新建了一个zval  称为:写时复制 (复制zval)

写时分离

$var3 = 1;

$var4 = &$var; #此时$var3 与 $var4 指向同一个zval refcount = 2, is_ref = 1;

$var3 = 2; #此时$var3与$var4 仍然指向同一个zval refcount = 2, is_ref = 1; 没有新建zval 成为:写时改变;

$var5 = $var3; #此时会为$var5 新建一个zval 因为 $var3 指向的zval的is_ref = 1即存在(写时改变)关联;

参考博客:http://www.laruence.com/2008/09/19/520.html