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