运行PHP程序后对变量值的混淆

时间:2012-04-16 11:56:20

标签: php variables post-increment

我正在为我的决赛而学习,我遇到了这个问题:

  

考虑以下PHP代码,执行后写输出

<?php
 $a=3;
 $b=$a++;
 IF($a>$b)
 {
   echo "a>$b";
 }
 else if ($a == $b)
 {
   echo "a=$b";
 }
 else
 {
   echo "a < $b";
 }
 ?>

当我在文本编辑器中输出时,我得到a < 3,但我不明白为什么会这样做?

我认为a被分配给3并且b被分配给++ 3和3 == 3所以应该打印出== 3?

5 个答案:

答案 0 :(得分:5)

不,您在$a上使用了后增量运算符。因此,$b将被赋值为3,之后,当执行语句时,$a将自己递增1,并变为4.因此,您现在将比较{{1 }和$a as 4

因此,您得到结果$b as 3

答案 1 :(得分:2)

在表达式得到评估后,$a++增量发生,而++$a将在之前发生

因此,在您的情况下,$b首先设置为3,然后$a增加。

答案 2 :(得分:1)

$a++明确地告诉变量$a增加,无论你是否分配给另一个变量! 这样就可以在循环中执行if ($a++ > 10) { // ...之类的操作。

对于您的情况,您必须采用$b = $a + 1;

答案 3 :(得分:1)

<?php
 $a=3;
 $b=$a++;
// $b = 3 and $a = 4 now
 IF($a>$b)
 {
   echo "a>$b";
 }
 else if ($a == $b)
 {
   echo "a=$b";
 }
 else
 {
   echo "a < $b";
 }
 ?>

答案 4 :(得分:1)

我测试了你的代码,我得到了:

a>3

这是有道理的

$ a是3,但当你做$ a ++时,它增加到4

$ b在++动作之前只是$ a所以它保持3

$a++视为$a = $a + 1然后才有意义