三元操作器中的多个条件安全吗?

2022-08-30 21:47:11

我看到过一些建议,说三元算子不能嵌套。

我已经测试了下面的代码,它工作正常。我的问题是,我以前从未见过像这样使用的三元运算符。所以,这是否像在一个中使用的那样可靠,或者这样的东西以后可能会来咬我(不是在术语或可读性上,而是通过失败)。if

$rule1 = true;
$rule2 = false;
$rule3 = true;

$res = (($rule1 == true) && ($rule2 == false) && ($rule3 == true)) ? true : false;

if($res) {
    echo "good";        
} else {
    echo "fail";
}

谢谢!


答案 1

如果从三元运算符返回的结果仅为“true”和“false”,则您甚至不需要该运算符。您可以拥有:

$res = (($rule1 === true) && ($rule2 === false) && ($rule3 === true))

但是,要回答您的问题,是的,多个条件可以很好地工作。


答案 2

它是完全合法的,它有效并且“像好像一样可靠”,但它看起来很丑陋。

如果将每个三元语句放在括号内,嵌套也很好:

$res = ( $rule1 ? true : ( $rule2 ? true : false ) )

手册中唯一建议不要这样做的是没有括号的嵌套,如下所示:

$res = ( $rule1 ? true : $rule2 ? true : false )

推荐