2

我只是在玩 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

4

5 回答 5

4

它应该回响

 55
 66

因为当您放置++在(后缀)之后时,增量是在语句执行后完成的。如果你想

 66
 66

然后做

$a = 5;
$b = $a;

echo ++$a . ++$b;
echo "\n";
echo $a++ . $b++;
于 2013-06-21T13:44:39.303 回答
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
于 2013-06-21T13:45:47.747 回答
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.

希望这对您理解有所帮助。

还要检查以下问题:

前增量与后增量
PHP 中的 ++$i 和 $i++ 有什么区别?

于 2013-06-21T13:47:08.300 回答
1

因为 $a++ 是后递增它返回值然后递增值。

尝试:

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

$a++;
$b++;
echo $a . $b;
echo "\n";
echo $a . $b;
$a++
$b++;
于 2013-06-21T13:47:13.293 回答
1

当您首先进行后增量时,将返回值,然后将其递增 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 :)

于 2013-06-21T13:47:14.753 回答