三元运算符的多个条件安全吗?

DMi*_*Min 16 php if-statement ternary-operator

我已经看到建议说三元运算符不能嵌套.

我已经测试了下面的代码,它可以正常工作.我的问题是,我之前没有看过这样使用的三元运算符.所以,这是否可靠,因为它在一个if或者像这样的东西来了,以后咬我(不是在术语或可读性,但失败).

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

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

if($res) {
    echo "good";        
} else {
    echo "fail";
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 26

如果从三元运算符返回的结果只是"真"和"假",那么您甚至不需要运算符.你可以拥有:

$res = (($rule1 === true) && ($rule2 === false) && ($rule3 === true))
Run Code Online (Sandbox Code Playgroud)

但是,要回答你的问题,是的,多个条件的效果非常好.


nob*_*ody 5

这是完全合法的,可以正常工作,并且“好像可靠”,但是看起来很丑。

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

$res = ( $rule1 ? true : ( $rule2 ? true : false ) )
Run Code Online (Sandbox Code Playgroud)

手册中建议的唯一方法是嵌套而不带括号,如下所示:

$res = ( $rule1 ? true : $rule2 ? true : false )
Run Code Online (Sandbox Code Playgroud)