递增数字不会出错

Incrementing numbers doesn't give an error

为什么这段代码低于 echo 的 2 并且没有给出错误,它只是忽略了 +1+2+3+4 吗?

我搜索过但找不到答案。

<?php
$i = 1;
$i+++1+2+3+4;
echo $i;

那一行:

$i+++1+2+3+4;

说:

  • 递增$i
  • $ipre增量的值加到+1+2+3+4,但存储结果任何地方。

因此 $i == 2.

如果您不希望它被忽略,您应该存储结果:

$i = $i+++1+2+3+4;

一切都很好。您只是忘记了赋值,所以 i 仅受 ++ 运算符影响:

<?php
$i = 1;
$x = $i+++1+2+3+4;
echo "{$i} vs "{$x}";

会return

2 vs 11

您永远不会在任何地方分配已完成的操作:

这两个在功能上是等价的:

$i++;
$i = $i + 1;

两者都会将 $i 递增 1,并将递增的值保存在 $i

使用 $i+++1+2+3+4 你实际上是在执行

  ($i++) + 1 + 2 + 3 + 4

也就是

 $i = $i + 1;
 1 + 2 + 3 + 4; // useless, result not stored anywhere

so 将 $i 加 1,将其保存到 $i,然后进行其他添加。但是由于那些没有被保存在任何地方,结果被丢弃了。

如果你有

php > $i = 1;
php > $i = $i+++1+2+3+4;
      ^^^^^----add this
php > echo $i;
11

那么它就会像你预期的那样工作了。

$i++表示$i.
加1 和 python 一样,+1+2+3+4 表示将 $i 预增量的值添加到 +1+2+3+4 但不要将其存储在任何地方。(所以没有内存地址或类似的东西。 ..).
所以你得到的只是 $i==2