增加字符串会产生意外结果

时间:2013-06-21 13:42:37

标签: php increment

我刚刚玩PHP,有人可以向我解释为什么下面的代码打印出5566而不是6666?

$a = 5;
$b = $a;

echo $a++ . $b++;
echo "\n";
echo $a++ . $b++;

它回显$ a然后加1吗?为什么不回应结果?

编辑: 观看者的另一个简单示例:

$a = 5;
$b = $a++;
echo $a++ . $b;

制作65

5 个答案:

答案 0 :(得分:4)

应该回应

 55
 66

因为当你将++放在(后缀)之后,然后在执行法定后完成增量。如果你想要

 66
 66

然后做

$a = 5;
$b = $a;

echo ++$a . ++$b;
echo "\n";
echo $a++ . $b++;

答案 1 :(得分:1)

这是一个POST-INCREMENT OPERATOR所以首先使用该值(即5),然后递增,这样你就得到了5566。

echo $a++ . $b++;  // echo 55 and then a becomes 6 , b becomes 6
echo "\n";
echo $a++ . $b++; // echo 66

答案 2 :(得分:1)

在你的代码中,IN首先回显它后返回$a的值,之后它的增量类似于$ b。

以下是$ a ++解释:

++$a    Pre-increment   Increments $a by one, then returns $a.
$a++    Post-increment  Returns $a, then increments $a by one.
--$a    Pre-decrement   Decrements $a by one, then returns $a.
$a--    Post-decrement  Returns $a, then decrements $a by one.

希望这对你有所帮助。

还检查以下问题:

Pre-incrementation vs. post-incrementation
What's the difference between ++$i and $i++ in PHP?

答案 3 :(得分:1)

因为$ a ++是后递增的,所以返回值然后递增值。

尝试:

echo ++$a . ++$b;
echo "\n";
echo $a++ . $b++;

相同
$a++;
$b++;
echo $a . $b;
echo "\n";
echo $a . $b;
$a++
$b++;

答案 4 :(得分:1)

当你首先进行postincrementation时,会返回值,然后它会增加1,这就是你得到这样结果的原因。

如果你先进行预先增加,那么就会增加$ a的值,然后返回它,因为你会看到66和77

echo ++$a . ++$b;

将按照您的预期打印66.

注意预增量/减量比post更快,这就是为什么如果你不需要在增量/减量使用它之前首先显示值。

Morover,如果您使用参考

 $a = 5;
 $b = &$a;

 echo $a++ . $b++;

它将输出56

 $a = 5;
 $b = &$a;

 echo ++$a . ++$b;

将输出77 :)