我只是在玩 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
它应该回响
55
66
因为当您放置++
在(后缀)之后时,增量是在语句执行后完成的。如果你想
66
66
然后做
$a = 5;
$b = $a;
echo ++$a . ++$b;
echo "\n";
echo $a++ . $b++;
它是一个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
在您的代码中,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.
希望这对您理解有所帮助。
还要检查以下问题:
因为 $a++ 是后递增它返回值然后递增值。
尝试:
echo ++$a . ++$b;
echo "\n";
echo $a++ . $b++;
和
$a++;
$b++;
echo $a . $b;
echo "\n";
echo $a . $b;
$a++
$b++;
当您首先进行后增量时,将返回值,然后将其递增 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 :)