$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索引的值结论:解析和计算并不是同时发生的,解析从左到右,计算从右到左