【发布时间】:2014-04-14 09:34:22
【问题描述】:
http://www.php.net/manual/en/language.operators.precedence.php#example-115
<?php
$a = 1;
echo $a + $a++; // may print either 2 or 3
?>
php 手册中的示例没有很好地解释。为什么$a++不求值成2,然后加到1,所以一直变成echo 1 + 2 // equals 3?我不明白它是如何“打印 2 或 3”的。我认为增量++ 比添加+ 具有“更高的优先级”?
也就是说,我不明白为什么不是……
$a = 1;
1) echo $a + $a++;
2) echo 1 + ($a = 1 + 1);
3) echo 1 + (2);
4) echo 3;
【问题讨论】:
-
它被明确记录为未定义,因为他们不希望您依赖当前的内部实现。哪个确实最近从 PHP 5.0.x 更改为 5.1。优先级没有实际价值。或者您是否有专门依赖这种边缘案例的真实世界代码?
-
这种情况,$a = 1,
$a + $a + $a++和$a + $a++都等于 3。看起来很奇怪。我认为$a++总是首先评估,因为优先级更高,但我错了……有点混乱。
标签: php operator-keyword operator-precedence