Php 递增字符串以产生意外结果

Php 递增字符串以产生意外结果,php,increment,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它应该会发出回声 55 66 因为当您将++放在(后缀)之后时,增量是在执行station之后完成的。如果你愿意

我只是在玩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
因为当您将
++
放在(后缀)之后时,增量是在执行station之后完成的。如果你愿意

 66
 66
那就做吧

$a = 5;
$b = $a;

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

它是一个
POST-INCREMENT运算符
,因此该值首先被使用(即5),然后递增,得到5566

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

在您的代码中,在first echo中,它返回
$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++是增量后的,所以它返回值,然后增加值

尝试:

这和

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

当您首先执行后增量时,返回值,然后将其递增1,这就是为什么会得到这样的结果

如果您先进行预增量运算,将$a的值相加,然后返回,因为您将看到66和77

echo ++$a . ++$b;
将按您的预期打印66

注意递增/递减前的速度比post快,这就是为什么如果不需要在递增/递减前先显示值,请使用它

莫洛弗,如果你使用参考资料

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

 echo $a++ . $b++;
它将输出56


将输出77:)

使用预增量运算符5566是此处的预期输出。echo$a++先打印$a,然后增加值,而echo++$a将先增加$a,然后打印:)
 $a = 5;
 $b = &$a;

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

 echo ++$a . ++$b;