在问题how to assign to multiple variables in a ternary operator上写下我的回答后,我实际尝试了我写的代码:
true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400;
var_dump($w); var_dump($r);
(不要打扰它没用,这是理论上的。)
现在,根据operator precedence:
,我希望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
这对我来说很奇怪,因为它需要执行三元运算符的两个部分的部分。
假设我的想法有些错误。
答案 0 :(得分:4)
你不是在做什么
(true ? $w = 100 xor $r = 200 : $w = 300) xor $r = 400;
答案 1 :(得分:3)
我根本不会以这种方式使用三元运算符。当需要整个表达式返回值时,请使用三元运算符,而不是替换逻辑代码构造。
例如:
if (true) {
$w = 100;
$r = 200;
} else {
$w = 300;
$r = 400;
}
var_dump($w);
var_dump($r);
使用if / else构造的优点:
使用三元运算符的优点: