增量值时的奇怪行为

时间:2011-11-09 08:40:22

标签: php

这是我的代码

$f1  = 1;
$f2  = ++$f1;
$f3  = ++$f2;
$f4  = ++$f3;

echo  $f1 . '<br />'.$f2.'<br />'.$f3.'<br />' .$f4. '<br />';

输出是:

2
3
4
4

我预计$ f4值为5,但它是4。 我错过了什么?

4 个答案:

答案 0 :(得分:3)

$f1  = 1;

将{1}分配给$f1

$f2  = ++$f1;

预增量$f1。所以它现在是2.而且这被分配给$f2。此时$f1$f2都是2

$f3  = ++$f2;

预增量$f2。所以它现在是3.而且这被分配给$f3。此时$f2$f3都是3

$f4  = ++$f3;

预增量$f4。所以它现在是4.这被分配给$f4。此时$f3$f4都是4

答案 1 :(得分:1)

operator ++实际上增加了变量。你想要的是$fn + 1;

在最后一种情况下,$ f3保持3,增加到4,4分配给$ f4。

$f1 = 1;
$f2  = ++$f1; //both $f1 and $f2 = 2
$f3  = ++$f2; //both = 3
$f4  = ++$f3; //both = 4

答案 2 :(得分:1)

这很合乎逻辑,请跟着

$ f1 = 1; 数字1分配给$ f1,这里没什么特别的

$ f2 = ++ $ f1; 你预先增加$ f1,所以变成$ f1 = 2。然后将此值分配给$ f2。所以$ f = 2也是

$ f3 = ++ $ f2; 在这里你预先增加$ f2,所以$ f2变为'3',然后你将该值赋给$ f3。所以$ f3 = 3

$ f4 = ++ $ f3; 接下来,您预先增加$ f3。因为它是'3',现在变成'4'。然后将该值分配给$ f4,该值也变为'4'。因此,这将离开你

2 3 4 4

答案 3 :(得分:0)

$f11;您预先增加它并将2分配给$f23$f34$f4也是如此。这些值与整个数字相匹配。

或者,另一种方式:从1开始。你有三个增量操作。因此,最终结果必须是4