什么将输出以下PHP程序

时间:2015-09-17 17:21:30

标签: php

我在php中有一个基于post和pre增量的程序,如

<?php
$x=5;
echo $x+++$x++;
 ?>

我执行程序和输出是11但我很困惑为什么它打印11.can任何人都可以解释这个程序是如何执行的。

3 个答案:

答案 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