PHP方程输出混乱 $x=5;回声“$x”;回声“”;echo$x++$x++;回声“”;echo$x;

PHP方程输出混乱 $x=5;回声“$x”;回声“”;echo$x++$x++;回声“”;echo$x;,php,Php,上面代码的输出不是“5,12,5”吗?PHP输出“5,11,7” 为什么??我很困惑 对$x的第一次引用是在其值仍然为5时(即,在其递增之前),而对$x的第二次引用是在其值为6时(即,在其再次递增之前),因此操作是5+6,这将产生11。执行此操作后,$x的值为7,因为它已递增两次 所以基本上是 提供5作为加法运算的操作数之一 在将其提供给加法运算(增量后)后增加x,使其为6 将上一个递增的x作为加法运算的第二个操作数,即6。所以它是5+6,得到11 最后,在加法运算后增加x,使其为7 见注释中的

上面代码的输出不是“5,12,5”吗?PHP输出“5,11,7”


为什么??我很困惑

对$x的第一次引用是在其值仍然为5时(即,在其递增之前),而对$x的第二次引用是在其值为6时(即,在其再次递增之前),因此操作是5+6,这将产生11。执行此操作后,$x的值为7,因为它已递增两次

所以基本上是

  • 提供5作为加法运算的操作数之一

  • 在将其提供给加法运算(增量后)后增加x,使其为6

  • 将上一个递增的x作为加法运算的第二个操作数,即6。所以它是5+6,得到11

  • 最后,在加法运算后增加x,使其为7

  • 见注释中的注释

    $x = 5; echo "$x"; echo "<br>"; echo $x+++$x++; echo "<br>"; echo $x;
    
    同时检查此项

    了解增量之前和增量之后的情况。

    $x++表示x的当前值为5,紧接着,x将为6


    对于第二个x,x=6,然后紧接着,x=7。

    $x++$x++
    后增量,但是$x的原始值是5。所以,当调用$x时,它不是总是5吗?对不起,我匆忙写道。考虑到操作优先级,正确的做法是:
    echo$x(5)++(6)+$x(6+5=11)++(7)
    立即阅读@Alan machadoIt,它不是+++$x+$x。他的是$x++++$x++,它打印了11条。你是对的,在OP的形式中,结果是11条。正如我写的,给12。这只是一个关于如何使用递增的例子。他解释了优先级的逻辑。但它仍然不能解决op对$x++$x的疑问++
    $x = 5; 
    echo $x . PHP_EOL;
    // now x=5
    
    echo ++$x + $x . PHP_EOL;
    // left side of the operation makes x=6 then the right side adds x to it, meaning 6+6
    
    echo ++$x . PHP_EOL;
    // now x=7