我正在为我的决赛而学习,我遇到了这个问题:
考虑以下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?
答案 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
然后才有意义