【问题标题】:How can we determine the Increment and decrements in PHP我们如何确定 PHP 中的增量和减量
【发布时间】:2012-02-10 15:57:59
【问题描述】:

请给我这个脚本的正确解决方案并附上解释:

 $a = 5;
 $c = $a-- + $a-- + --$a - --$a;
 echo $c;

$c = 10 的值是多少;为什么?

【问题讨论】:

  • “解决方案”是什么意思?
  • 其实我只是想确认一下,先执行什么。减量前或减量后...
  • 为什么不直接执行呢?
  • 其实我对 PHP 基础了解的并不多。
  • 自己动手——这就是你所需要的:php.net/manual/en/language.operators.precedence.php 当然,还要付出一些努力。是的,值为 10。

标签: php increment


【解决方案1】:

从阅读上面和下面的脚本到断言

$var++, $var--  //Use value then apply incremnet, decrement
++$var, --$var  // Increment, decrement then use vakue

您可以重写表达式以便于理解。

$a = 5;
$c = $a--;   // $c = 5, $a = 4
$c += $a--;  //$c = 9, $a = 3
$c += --$a   // $c = 11, $a = 2 ($a drops to two before use)
$c -= --$a   //$c = 10  $a = 1 ($a drops to one before use);

【讨论】:

    【解决方案2】:

    ++-- 产生相同的最终结果 - 递增或递减变量 - 无论是在变量名之前还是之后应用,不同之处在于将其用作更大语句的一部分。

    考虑一下:

    $a = 5;
    $a--;
    echo $a; // 4
    
    $a = 5;
    --$a;
    echo $a; // 4
    

    所以你看,它们产生相同的最终结果 - $a 减一。我确定这是您所期望的。

    但是:

    $a = 5;
    echo $a--; // 5
    echo $a; // 4
    
    $a = 5;
    echo --$a; // 4
    echo $a; // 4
    

    在这个例子中,$a在操作后仍然递减,但是递减发生的顺序和使用值的顺序不同。对于$a--,该值在之前使用,对于--$a,该值在之后使用。

    所以对于您的示例代码:

    $a = 5;    //  Operations in order of occurence:
    $c = $a--  //  $c = 5;          $a = 5 - 1  == 4;
       + $a--  //  $c = 5 + 4 == 9; $a = 4 - 1  == 3;
       + --$a  //  $a = 3 - 1 == 2; $c = 9 + 2  == 11;
       - --$a; //  $a = 2 - 1 == 1; $c = 11 - 1 == 10; 
    echo $c;   //  10
    

    【讨论】:

    • 再说一遍,各位。你回答错了!首先 --$a 给出 2 而不是 3
    • 这个答案是错误的。立即寻找正确答案的链接。
    【解决方案3】:
    $a = 5 ; // $a = 5
    $c = $a-- // $c = 5 $a = 4
    +
    $a-- // $c = 9 $a = 3
    +
    --$a // $c = 11 $a = 2
    -
    --$a // $c = 10 $a = 1
    ;
    echo $c ; // $c = 10
    

    【讨论】:

      【解决方案4】:

      表达式$a-- 是后减的,这意味着它首先返回$a,然后将$a 减一。表达式--$a 是预减量,它首先将$a 减1,然后返回$a

      考虑到上述情况,这意味着$c = 5 + 4 + 2 - 1 = 10

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 1970-01-01
        • 2012-03-27
        • 2013-01-19
        • 2019-08-02
        • 2021-06-07
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多