脚本宝典收集整理的这篇文章主要介绍了PHP:在写入时复制和按引用分配在PHP5和PHP7上执行不同的操作,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
1 <?PHP 2 $i = 2; 3 $j = &$i; 4 echo (++$i) + (++$i);
$i是一个引用,当我们通过i增加$i时,它将改变zval而不是复制,因此第4行将是4 4 = 8.这是按引用分配.
如果我们评论第3行,它将输出7,每次我们通过增加它来改变它,PHP将复制,第4行将是3 4 = 7.这是Copy On WrITe.
我已经检查了PHP7:http://php.net/manual/en/migration70.incompatible.php中的更改,但我没有得到任何线索.
任何帮助都会很棒,提前谢谢.
UPDATE1
以下是PHP5 / PHP7:https://3v4l.org/USTHR上代码的结果
UPDATE2
操作码:
[huqiu@101 tmp]$PHP -d vld.active=1 -d vld.execute=0 -f incr-ref-add.PHP Finding entry points branch analysis From position: 0 Jump found. Position 1 = -2 filename: /home/huqiu/tmp/incr-ref-add.PHP function name: (null) number of ops: 7 compiled VARs: !0 = $i,!1 = $j line #* E I O op fetch ext return operands ------------------------------------------------------------------------------------- 2 0 E > ASSIGN !0,2 3 1 ASSIGN_REF !1,!0 4 2 PRE_INC $2 !0 3 PRE_INC $3 !0 4 ADD ~4 $2,$3 5 ECHO ~4 5 6 > RETURN 1 branch: # 0; line: 2- 5; sop: 0; eop: 6; out1: -2 path #1: 0,
以上是脚本宝典为你收集整理的PHP:在写入时复制和按引用分配在PHP5和PHP7上执行不同的操作全部内容,希望文章能够帮你解决PHP:在写入时复制和按引用分配在PHP5和PHP7上执行不同的操作所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。