代码一:
$i = 1;
$i = $i++ + ++$i;
echo $i;代码二:
$i = 1;
$i = ++$i + $i++;
echo $i;这两段代码结果都是4小弟想不明白 php的 解析原理 求大哥指点
$i = 1;
$i = $i++ + ++$i;
echo $i;代码二:
$i = 1;
$i = ++$i + $i++;
echo $i;这两段代码结果都是4小弟想不明白 php的 解析原理 求大哥指点
$i = 1;
$i = $i++ + ++$i;
==>
$i = 1(但由于$i++,所以$i为2) + 3(++$i $i为2,加1后为3)$i = 1;
$i = ++$i + $i++;
==>
$i = 2 + 2
$i = $i++;
echo $i;
echo $i;输出 两个1++操作 被吞掉了
我是这么分析的
$i = $i++
首先你要承认这是一个赋值操作,将右面的值赋给左面(即$i)先看右边,当前i的值是1,而i++本身的值也是1,但是i++操作之后i的值就是2了。
重点是最后,要进行复制。上面说到i++本身是1,将1复制给i,这时候i就从2变成了1.
没有吞掉一说。
$i = 1;
$ii = ++$i + $i++;
echo "\$i=$i \$ii=$ii";//$i=3 $ii=4$i = 1;
$ii = $i++;
echo '$i='.$i; //$i=2
echo '$ii='.$ii; //$ii=1
我是这么分析的
$i = $i++
首先你要承认这是一个赋值操作,将右面的值赋给左面(即$i)先看右边,当前i的值是1,而i++本身的值也是1,但是i++操作之后i的值就是2了。
重点是最后,要进行复制。上面说到i++本身是1,将1复制给i,这时候i就从2变成了1.
没有吞掉一说。
先赋值 后 ++吧
$i = funcation(){return $i++;}++操作 被当做了 局部 变量
无论先后 也是 在 $i上 ++结果应该是 $i=2$j=$i++;
$i=$i++;对于 结果$i 不一样
$i = $i++ + ++$i;
这个得到的应该是
$i = 1(先取再加,所以这里还是1) + 3(由于之前$i++得到了2,这里先加再取,所以是3);
第二个是 1+3
所以都是等于4咯,
$i++ 这个表达式是将 $i+1 ,同时这个表达式值也是$i+1,
++$i 这个表达式也是将 $i+1 ,但是这个表达式的值是$i,不是$i+1,懂了吗?这是两个不同的表达式
第二个是 2+2
所以都是等于4咯,
++$i 这个表达式是将 $i+1 ,同时这个表达式值也是$i+1,
$i++ 这个表达式也是将 $i+1 ,但是这个表达式的值是$i,不是$i+1,懂了吗?这是两个不同的表达式
$i = 1;
$j = $i++ + ++$i;
echo $i.':'.$j;$i = 1;
$j= ++$i + $i++;
echo $i.':'.$j;
可能 两种 写法 都是 2+2 应该 不会 有 1+3