1

在写下我对如何在三元运算符中分配给多个变量的问题的回答之后,我实际上尝试了我编写的代码:

true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400;
var_dump($w); var_dump($r);

(不要打扰它没用,这是理论上的。)

现在,我希望 PHP 根据运算符优先级这样做:

 true  ?   $w = 100  xor  $r = 200   :   $w = 300  xor  $r = 400  ;
(true) ? ( $w = 100  xor  $r = 200 ) : ( $w = 300  xor  $r = 400 );
(true) ? (($w = 100) xor ($r = 200)) : (($w = 300) xor ($r = 400));

在评估三元运算符的第一部分时,应输出:

int 100
int 200

但相反我得到

int 100
int 400

这对我来说很奇怪,因为它需要执行三元运算符的两个部分

假设这是我的想法有问题。

4

2 回答 2

4

你不就是在做吗

(true ? $w = 100 xor $r = 200 : $w = 300) xor $r = 400;
于 2010-07-15T22:21:55.830 回答
3

我根本不会以这种方式使用三元运算符。当您需要整个表达式返回一个值时,使用三元运算符,而不是作为逻辑代码结构的替代品。

例如:

if (true) {
  $w = 100;
  $r = 200;
} else {
  $w = 300;
  $r = 400;
}

var_dump($w); 
var_dump($r);

使用 if/else 构造的优点:

  • 更易于阅读、更易于维护、更易于调试。
  • 如果需要,更容易在每个条件块内添加更多步骤。
  • 如果您使用代码覆盖率工具运行测试,当您的所有代码不在一行时,您可以更准确地了解正在测试哪些代码路径。
  • 您无需向 Stack Overflow 发布问题即可使其正常工作!

使用三元运算符的优点:

  • 使用较少的花括号和分号,以防您用完它们或在键盘上找不到它们。
于 2010-07-15T22:34:42.087 回答