今天妹子问了个关于PHP中++和%的优先级的问题,最初我给出的答案是优先级不一定,看具体的情况来定。妹子说是++优先级高,还发了个图片,如下图:

[

1.pic](http://www.domyself.me/wp-content/uploads/2014/05/1.pic_-300x225.jpg)
1.pic](http://www.domyself.me/wp-content/uploads/2014/05/1.pic_-300x225.jpg)

然后我很粗心的就看到了6和7,然后觉得不可思议,还真是++优先级高啊?我就设计了个小实验,代码如下:

1
2
3
4
5
6
7
8
9
10
<?php
$i=1;
print $i++;
print $i;
print $i%4;
print $i++%4;
print ++$i%4;
print 4%++$i;
print 4%$i++;
?>

执行结果是1222044. 然后我就跟妹子说书上说的对,果然是++优先,然后自己还在茫然的时候,妹纸说,其实问你这个是因为不明白6和9。。。。然后我又一看,果然第9行,又是个++。。。。 我重新看了遍我的代码,发现了我最后的一行其实是错误的设计,最后一行的取值收到了上一行的影响,我重新设计了一下,如下:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$i=1;
print $i++;
print $i;
print $i%4;
print $i++%4;
print ++$i%4;
print 4%++$i;
$i=4;
print 4%$i++;
print $i;
?>

重新执行,结果是12220405.
问题其实就是出在
4%++$i 执行前,$i==5,导致4%$i++变成了4%5++,这就出现了,4%5和4%6的结果都是4,没法判断到底是%优先还是++优先了。。。修正后的试验就是4%4++,试验说明,先执行了%,然后才是++。

好蛋疼的东西,最后我跟妹纸说,实际开发的时候,都是直接上小括号了,对己对伙伴都有好处,不要埋坑。。