<?php
$b=1;for($i=1;$i<4;$i++){
$b=$b++;
echo $b;
echo "<hr/>";
}?><?php $b=1;for($i=1;$i<4;$i++){
$a=$b++;
echo $a;
echo "<hr/>";
}?>
<?php
$b=1;for($i=1;$i<4;$i++){
$b=++$b;
echo $b;
echo "<hr/>";
}?>
<?php $b=1;for($i=1;$i<4;$i++){
$a=++$b;
echo $a;
echo "<hr/>";
}?>
这四个运行结果  分别为1、1、1  
                      1、2、3、
                      2、3、4
                      2、3、4
第一个结果 和第三个结果   我有些搞不请请问下大家机制原理 

解决方案 »

  1.   

    前增量/前减量运算符
    所谓前增量运算符,就是数值上加 1,形式是在变量前放两个加号(++):var iNum = 10;
    ++iNum;第二行代码把 iNum 增加到了 11,它实质上等价于:var iNum = 10;
    iNum = iNum + 1;
    在使用前缀式运算符时,注意增量和减量运算符都发生在计算表达式之前。后增量/后减量运算符后增量运算符也是给数值上加 1,形式是在变量后放两个加号(++):与前缀式运算符不同的是,后缀式运算符是在计算过包含它们的表达式后才进行增量或减量运算的。
    理解上面的东西就行了
      

  2.   

    这个是例子 方便你理解var iNum = 10;
    iNum--;
    alert(iNum); //输出 "9"
    alert(iNum--); //输出 "9"
    alert(iNum); //输出 "8"
      

  3.   

    我知道前置和后置的区别  所以第二个和第四个搞的清楚啊 但是第一个和第三个 搞不清楚 
    只要是赋值$b=$b++  $b=++b 就搞不清了  其实这个考察基础知识点不是前置和后置的问题!
      

  4.   


    难道不是我说的 牵制和后置的问题吗?
    你把 $b=$b++ 想成 $a=$b++ 有什么区别吗?
    <?php
    $b=1;for($i=1;$i<4;$i++){  //循环了3次
    $b=$b++;//在后置之前把$b的值1 赋值给 $b.那么$b=1;
    echo $b;//这里输出自然就是1 
    echo "<hr/>";
    } 另外一个不需要我解释了吧?
    $b 原始值=1 在每次后置之前都重新赋值等于1 然后输出这个值  循环了三次 所以输出了3个1?>
      

  5.   

    这里有点不懂  的确是在后置之前赋值为1  但是后置赋值之后$b=2了啊,为什么没有覆盖$b=1的值呢?
    我的理解 
    $b=1++分解:  $b=1
            后置算法 
      

  6.   

    这里有点不懂  的确是在后置之前赋值为1  但是后置赋值之后$b=2了啊,为什么没有覆盖$b=1的值呢?
    我的理解 
    $b=1++分解:  $b=1
            后置算法 1++
            $b=2
      

  7.   

    按照次序从左到右 
    $b=1;
    $b=$b++;
    echo $b;//$b=1;后置 在赋值之后做的运算。在echo 之前他做的运算 ,他只运算,但已经不再赋值了,他运算不影响结果.这能看懂?
    所以你$b 换成$a结果就不同了.
      

  8.   

    你这么看$b=$b++;分解:
    $b=$b;
    $b++;这样能知道什么是后置了吧?
      

  9.   

    $b++可以这样想:先使用变量$b之后,再进行$b+1运算;而++$b是先计算$b+1,再使用$b这个变量。
    这样的话,第3个就很好理解了。第1个有点意思,似乎是$b经赋值后,不再是原来那个$b了,所以$b++无效?完全不是$b=$b;$b++;这样算的,看看先。
      

  10.   

    PhpNewnew  我个人觉得可乐泡泡说的有道理啊。 泡泡说的我懂了!  有就是说  经过赋值以后,后置函数++失效了!
      

  11.   

    谢谢PhpNewnew  感谢Jnthts啊!
      

  12.   

    有就是说 经过赋值以后,后置函数++失效了!
    ========
    想过了,还不是这样。$b=$b++的过程是这样:
    先执行$b这个表达式,这样表达是的值是1;再执行$b++,这时$b的值是2;再给$b赋值,注意,这时赋的值是原来已经计算出的$b这个表达式,于是$b的值回到1。用$b=$b++ + $b++,结果是3 7 15就比较明显的看出来。