如果嵌套在php中的条件,如何使用三元运算符

时间:2016-04-29 13:26:41

标签: php

 if($data['status']=="AVAILABLE"){

       if(Yii::app()->user->getState('userId')!=$book_owner_id){
         $wantbtn_class = "showbtn";
       }else{
        $wantbtn_class = "hidebtn";
       }
}else{
    $wantbtn_class = "hidebtn";
}

如何使用这个condtion三元运算符可以任何人帮助我....

4 个答案:

答案 0 :(得分:1)

三元陈述遵循以下模式:

(比较)? (如果是真的话):(如果是假的话)

您可以通过以下方式使您的三元组成为:

($data['status']=="AVAILABLE")?((Yii::app()->user->getState('userId')!=$book_owner_id)?$wantbtn_class = "showbtn";:$wantbtn_class = "hidebtn";):$wantbtn_class = "hidebtn";

虽然上面的代码直接回答了您的问题,但您应该暂停询问“我应该使用三元”吗?

答案可能是否定的。正如您所看到的,这段代码的可读性较差,而您原来的if / else语句是完全可读的。

共识似乎是你只对简单表达式使用三元组(参见:this response),但对于更复杂的表达式,将其全部分解为if / else语句。

答案 1 :(得分:1)

$wantbtn_class = ($data['status']=="AVAILABLE") ? ((Yii::app()->user->getState('userId')!=$book_owner_id)? "showbtn" :"hidebtn"):"hidebtn";

有关详细信息,请查看stacking-multiple-ternary-operators-in-php

答案 2 :(得分:0)

你可以重构你的情况并将你的2"其他"像这样:

($data['status']=="AVAILABLE" && Yii::app()->user->getState('userId') != $book_owner_id)? $wantbtn_class = "showbtn": $wantbtn_class = "showbtn";

答案 3 :(得分:0)

我猜你所指的部分是:

if(Yii::app()->user->getState('userId')!=$book_owner_id) {
     $wantbtn_class = "showbtn";
} else {
    $wantbtn_class = "hidebtn";
}

如果是这种情况,要使用三元运算符,请执行以下操作:

$wantbtn_class =  ( Yii::app()->user->getState('userId') != $book_owner_id ) ? "showbtn" : "hidebtn";

但是,如果您指的是完整代码,那么您需要的是:

$wantbtn_class = ( ($data['status']=="AVAILABLE") && (Yii::app()->user->getState('userId') != $book_owner_id) ) ? "showbtn" : "hidebtn";