我在php中有一个基于post和pre增量的程序,如
<?php
$x=5;
echo $x+++$x++;
?>
我执行程序和输出是11但我很困惑为什么它打印11.can任何人都可以解释这个程序是如何执行的。
答案 0 :(得分:2)
x++
称为postincrement,返回x
,然后将x
增加1。相反的是++x
(preincrement),将x
增加1,然后返回。中间的+
是用于加法的算术运算符。
$x = 5;
echo $x++ + $x++; // 11
echo $x; // 7
答案 1 :(得分:2)
postincrement运算符递增变量,但返回其旧值。所以$x++
相当于:
($temp = $x, $x = $x + 1, $temp)
当你在表达式中执行两次时,它就像:
echo ($temp1 = $x, $x = $x + 1, $temp1) + ($temp2 = $x, $x = $x + 1, $temp2);
第一部分设置$temp1 = 5
并将$x
增加到6
。第二部分设置$temp2 = 6
并将$x
增加到7.然后它$temp1 + $temp2
并回显结果,即5 + 6 = 11
。
答案 2 :(得分:0)
这:echo $x+++$x++
与:
echo ( ($x++) + ($x++) )
因此,正如您所看到的,它添加了$x++
加$x++
在PHP中,当您运行$x++
时,与说$x = $x + 1
相同,但返回原始值$x
。 (正如评论中所述)
例如,如果你这样做:
$x = 5;
echo $x++; //outputs $x, then adds 1
echo $x++; //outputs $x, then adds 1
/*
THIS IS WHAT THE ABOVE DOES:
set x equal to 5
echo x (OUTPUTS 5), then add 1.
echo x (OUTPUTS 6), then add 1.
*/
话虽如此,在$x+++$x++
中,$ x的第一个引用是它的值仍然是5(在它递增之前),第二个引用到$ x的时候它的值是6(在它之前)再次增加),因此:5 + 6 = 11
来源:http://php.net/manual/en/language.operators.increment.php