首页 > 其他 > 详细

$data[$i++]+=2;不等于$data[$i++]=$data[$i++]+2;

时间:2016-04-21 15:17:58      阅读:440      评论:0      收藏:0      [点我收藏+]

$data=array(1,2,3,4); $i=1; $data[$i++]+=2; var_dump($data); echo $i; //输出:array(1,4,3,4) 和 2 $data=array(1,2,3,4); $i=1; $data[$i++]=$data[$i++]+2; var_dump($data); echo $i; //输出:array(1,5,3,4) 和 3
 

下面这句,在解析的时候还是从左到右解析,当解析第一个data[i++]的时候,由于是后++所以data数组里的i还是原来的i。当解析第二个的时候,第一个的后++完成了运算,则第二个data里的i比原来的i加了1。在运算的时候从右到左运算,所以结果就是i+1的数组元素的值乘以2然后赋值给i元素的值。而最后,i会加了2
上面那句i最后也只会加1,并且在与2相乘的时候取值也是i索引的值,赋值的时候也是i索引的值
结论:解析和计算并不是同时发生的,解析从左到右,计算从右到左

$data[$i++]+=2;不等于$data[$i++]=$data[$i++]+2;

原文:http://www.cnblogs.com/3body/p/5416793.html

(0)
(2)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!