Php 多个elseif语句的问题
试图创建一系列冗长的if-else语句。基本上,四种不同的场景会根据查询显示不同的按钮 如果活动是免费的,请按一个按钮 但是,如果活动是免费的,但您必须RSVP(如我们的聚会),则显示此按钮 或者,如果有门票,但活动不是免费的,但有折扣,则显示此按钮 否则,如果有票但不是免费的,请显示此按钮 这就是我现在拥有的Php 多个elseif语句的问题,php,if-statement,Php,If Statement,试图创建一系列冗长的if-else语句。基本上,四种不同的场景会根据查询显示不同的按钮 如果活动是免费的,请按一个按钮 但是,如果活动是免费的,但您必须RSVP(如我们的聚会),则显示此按钮 或者,如果有门票,但活动不是免费的,但有折扣,则显示此按钮 否则,如果有票但不是免费的,请显示此按钮 这就是我现在拥有的 if ( isset($additional_fields[ 'Price' ]) == 'Free' ) { echo '<button class="btn-free"
if ( isset($additional_fields[ 'Price' ]) == 'Free' ) {
echo '<button class="btn-free">This Event is Free!</button></a>';
} elseif( isset($additional_fields[ 'Tickets' ]) && (isset($additional_fields[ 'Price' ])) == 'Free' ) {
echo '<a href="' . $additional_fields[ 'Tickets' ] . '" target="_blank"><button class="btn-rsvp">Free with RSVP</button></a>';
} elseif( isset($additional_fields[ 'Tickets' ]) && (isset($additional_fields[ 'Price' ])) != 'Free' && (isset($additional_fields[ 'Discounts' ]))) {
echo '<a href="' . $additional_fields[ 'Tickets' ] . '" target="_blank"><button class="btn-discount">Tickets ' . $additional_fields[ 'Discount Text' ] . '</button></a>';
} elseif( isset($additional_fields[ 'Tickets' ]) ){
echo '<a href="' . $additional_fields[ 'Tickets' ] . '" target="_blank"><button class="btn-tkts">Get Tickets</button></a>';
}
if(isset($additional_fields['Price'])=='Free'){
echo“此事件是免费的!”;
}elseif(isset($additional_fields['Tickets'])&&(isset($additional_fields['Price']))=='Free'){
回声';
}elseif(isset($additional_fields['Tickets'])和&(isset($additional_fields['Price'])!='Free'&(isset($additional_fields['折扣])){
回声';
}elseif(isset($additional_fields['Tickets'])){
回声';
}
代码工作。。。。到了一定程度。如果我有一个活动是免费的,我会得到这个活动是免费的按钮,但是如果我有一个活动是免费的,但也提供门票/rsvp,我仍然会得到第一个没有链接的免费按钮。第二步应该发生在这里。不是第一次。如果增加价格或任何超出“免费”一词的内容,则相同的交易
我点的菜对吗?或者代码中的其他内容?例如,您应该尝试测试该键是否与是否等于“Free”分开设置
if ( isset($additional_fields[ 'Price' ]) && $additional_fields[ 'Price' ] == 'Free' ){
do this
}
因为isset只会返回true或false。您似乎在条件的顺序和
isset()的使用方面有问题。我认为以下代码是您的目标:
if( isset($additional_fields[ 'Tickets' ]) && isset($additional_fields[ 'Price' ]) && $additional_fields[ 'Price' ] == 'Free' ) {
echo '<a href="' . $additional_fields[ 'Tickets' ] . '" target="_blank"><button class="btn-rsvp">Free with RSVP</button></a>';
} elseif ( isset($additional_fields[ 'Price' ]) && $additional_fields[ 'Price' ] == 'Free' ) {
echo '<button class="btn-free">This Event is Free!</button></a>';
} elseif( isset($additional_fields[ 'Tickets' ]) && isset($additional_fields[ 'Price' ]) && isset($additional_fields[ 'Discounts' ])) {
echo '<a href="' . $additional_fields[ 'Tickets' ] . '" target="_blank"><button class="btn-discount">Tickets ' . $additional_fields[ 'Discount Text' ] . '</button></a>';
} elseif( isset($additional_fields[ 'Tickets' ]) ){
echo '<a href="' . $additional_fields[ 'Tickets' ] . '" target="_blank"><button class="btn-tkts">Get Tickets</button></a>';
}
if(isset($additional_fields['Tickets'])&&isset($additional_fields['Price'])&&isset($additional_fields['Price'])和&$additional_fields['Price']=='Free'){
回声';
}elseif(isset($additional_fields['Price'])和&$additional_fields['Price']=='Free'){
echo“此事件是免费的!”;
}elseif(isset($additional_fields['Tickets'])和isset($additional_fields['Price'])和&isset($additional_fields['折扣])){
回声';
}elseif(isset($additional_fields['Tickets'])){
回声';
}
是的,您将得到第一条语句,因为在您的第一条语句中,您已经检查了
if ( isset($additional_fields[ 'Price' ]) == 'Free' )
那么现在在第一条语句中,价格是免费的那么当满足if()
时,为什么代码会转到else语句呢
并且还使用了isset()
其返回值仅为布尔值
用这个
}
将此选项用于所有状态
如果还有什么问题,请告诉我
希望它能帮助您我建议您提前检查和设置变量,以使代码更易于阅读
$tickets = (isset($additional_fields['Tickets'])) ? $additional_fields['Tickets'] : false;
$price = (isset($additional_fields['Price'])) ? $additional_fields['Price'] : false;
$discounts = (isset($additional_fields['Discounts'])) ? $additional_fields['Discounts'] : false;
$discount_text = (isset($additional_fields['Discount Text'])) ? $additional_fields['Discount Text'] : false;
由于您的所有条件都依赖于票证的设置,所以只需在开始检查并将其清除即可
if ($tickets) {
if ($price == "Free") {
echo '<a href="' . $tickets . '" target="_blank"><button class="btn-rsvp">Free with RSVP</button></a>';
} else if ($discounts) {
echo '<a href="' . $tickets . '" target="_blank"><button class="btn-discount">Tickets ' . $discount_text . '</button></a>';
} else {
echo '<a href="' . $tickets . '" target="_blank"><button class="btn-tkts">Get Tickets</button></a>';
}
}
if($tickets){
如果($price==“Free”){
回声';
}如果需要,其他(折扣){
回声';
}否则{
回声';
}
}
isset()
返回true/false发生这种情况的原因是,如果事件是空闲的,if语句将结束,并且不会继续执行其余的elseif
案例。isset($additional_fields['Price'])和$additional_fields['Price']='FREE'
与其余的情况相同。但是如果我不使用isset,我会得到PHP错误。通常就是这样。如果(isset($additional_fields['Price'])&&&$additional_fields['Price']=='Free'&&!isset($additional_fields['Tickets']),您也可以使用isset,条件如下:谢谢!我知道这是关于订单的事。
if ($tickets) {
if ($price == "Free") {
echo '<a href="' . $tickets . '" target="_blank"><button class="btn-rsvp">Free with RSVP</button></a>';
} else if ($discounts) {
echo '<a href="' . $tickets . '" target="_blank"><button class="btn-discount">Tickets ' . $discount_text . '</button></a>';
} else {
echo '<a href="' . $tickets . '" target="_blank"><button class="btn-tkts">Get Tickets</button></a>';
}
}