PHP 中令人困惑的运算符优先级 2 / 5 * 3

Confusing Operator Precedence 2 / 5 * 3 in PHP

如PHP的手册所示,以下运算符具有相同的优先级(左结合性):

* / %

所以,这意味着:

echo 2 / 5 * 3

必须显示7.5!因为乘法会先执行,5 * 3 = 15 然后商会除以 2。

但是当我 运行 该代码时,PHP 代码输出 1.2!

任何人都可以了解发生了什么事吗?

相同的优先级意味着一切都会从左到右发生。

意味着它不会先繁殖。 * / % 在手册中的书写顺序无关紧要。

  • 2 / 5 = 0.4
  • 0.4 * 3 = 1.2

此外,按照您的逻辑,您应该得到 1.(3),但这不是重点。

从左到右 2/5=0.4 0.4*3=1.2

有一个执行算术运算的命令。调用短 PEMDAS

  1. () - 括号
  2. / - 偏差
  3. * - 乘法
  4. + - 添加
  5. - - 分钟

这将(2 / 5 * 3) 执行上面的命令


所以这里发生了什么2 / 5 * 3

  1. 2/5 = 0.4
  2. 0.4*3 = 1.2

满足您的要求

  1. 5 * 3 = 15
  2. 15 / 2 = 7.5

所以你必须做 (5 * 3) / 22 / (5 * 3)


PHPFiddle Preview

如您所见:http://php.net/manual/en/language.operators.precedence.php

运算符*/和%具有相同的优先级。 * 与 /.

具有相同的优先级