为什么这两个后期增加的PHP给出了相同的答案?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了为什么这两个后期增加的PHP给出了相同的答案?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > PHP operator precedence “Undefined order of evaluation”?3个
我试图通过localhost在PHP中运行以下代码,但它给出了意想不到的输出
<?PHP
    $a = 1;
    echo ($a+$a++); // 3
?>

//答案是3,但由于后期增加,答案应为2
这是另一个代码,它给出了相同的答案!为什么?

<?PHP
   $a = 1;
   echo ($a+$a+$a++);
?>

//答案仍然是3 !!!

PHP手册说明如下:

那么归结为什么,PHP没有明确定义这些类型的语句的最终结果,甚至可能在PHP版本之间发生变化.我们称之为未定义的行为,您不应该依赖它.

您可能能够在中的某处找到确切原因,为什么选择此顺序,但可能没有任何逻辑.

您的两个示例正在评估如下:

<?PHP
  $a = 1;
  echo ($a + $a++); // 3
?>

真的变成了:

<?PHP
  $a = 1;
  $b = $a++;
  echo ($a + $b); // a = 2,b = 1
?>

你的第二个例子:

<?PHP
  $a = 1;
  echo ($a + $a + $a++); // 3
?>

变为:

<?PHP
  $a = 1;
  $b = $a + $a;
  $a++;
  echo $b + $a; // 3
?>

我希望这是有道理的.你是对的,这背后没有硬性逻辑.

脚本宝典总结

以上是脚本宝典为你收集整理的为什么这两个后期增加的PHP给出了相同的答案?全部内容,希望文章能够帮你解决为什么这两个后期增加的PHP给出了相同的答案?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。