Php 递增的数字不会';不要出错

Php 递增的数字不会';不要出错,php,numbers,increment,Php,Numbers,Increment,为什么这段代码低于echo的2,并且没有给出错误,它只是忽略了+1+2+3+4 我搜索过了,但找不到答案 <?php $i = 1; $i+++1+2+3+4; echo $i; 那一行: $i+++1+2+3+4; 说: 增量$i 将$i预增量的值添加到+1+2+3+4,但不要将结果存储在任何位置 因此,$i==2 如果不希望忽略它,则应存储结果: $i = $i+++1+2+3+4; 一切都很好。您刚刚忘记了赋值,因此i仅受++运算符的影响: <?php $i = 1;

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

我搜索过了,但找不到答案

<?php
$i = 1;
$i+++1+2+3+4;
echo $i;
那一行:

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

  • 增量
    $i
  • $i
    预增量的值添加到
    +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}";

您从未将已完成的操作分配到任何位置:

这两者在功能上是等效的:

$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
因此,将
$i
增加1,将其保存到
$i
,然后进行其他添加。但由于这些数据没有被保存在任何地方,结果就被扔掉了

如果你有

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

然后它就会如您所期望的那样工作。

$i++
意味着将1添加到
$i

与python一样,
+1+2+3+4
意味着将
$i
的预增量值添加到
+1+2+3+4
中,但不要将其存储在任何地方。(因此没有内存地址或类似的东西…。
所以你得到的只是
$i==2

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