几天前,我正在接受采访,对我来说,我有一项任务与增量的未知用法有关。就像这样:

echo $x+++$x++;


我以前从未见过这样的东西,我试图弄清楚它的作用,我一无所知。为了检查它,我写了这样的代码示例:

<?php
$x = 7;

echo $x. "<br>";
echo $x+++$x++;
?>


第一行将打印出应打印的内容:7
但是第二行打印出15。为什么?这东西如何工作?这是什么意思?

是我还是与变量变量类似的东西,这是面试官的有趣任务,但实际上却没有用?

最佳答案

如果将其分解一点可能会更容易。

PHP将$x++识别为增量。之后的附加+被认为是附加的。有

$x+++$x++


等于

$x++ + $x++


这是后递增的,这意味着您将返回值-然后将值递增一。

一步一步地像这样执行


设置$x = 7
$++发生,它返回递增之前的值,即7,然后将$x递增1
已返回$x = 7,但是$x现在为8(由于后递增)
$x与它在增量之前具有的值相加,在增量之后与$x相加(因为从第一个$x++返回7,但是在第一个增量$x之后自然会递增$x++$x变为8-现在是最后一个后递增发生之前第二个$x的值)
您得到7 + 8 = 15的加法,然后打印出来
最后一次增加$x,使其变为$x = 9(这一点无关紧要,因为此后您不使用$x




请查看有关运算符优先级和递增/递减运算符的手册。


PHP operator precedence
PHP incrementing/decrementing operators

09-25 17:13
查看更多