Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个elseif语句的问题_Php_If Statement - Fatal编程技术网

Php 多个elseif语句的问题

Php 多个elseif语句的问题,php,if-statement,Php,If Statement,试图创建一系列冗长的if-else语句。基本上,四种不同的场景会根据查询显示不同的按钮 如果活动是免费的,请按一个按钮 但是,如果活动是免费的,但您必须RSVP(如我们的聚会),则显示此按钮 或者,如果有门票,但活动不是免费的,但有折扣,则显示此按钮 否则,如果有票但不是免费的,请显示此按钮 这就是我现在拥有的 if ( isset($additional_fields[ 'Price' ]) == 'Free' ) { echo '<button class="btn-free"

试图创建一系列冗长的if-else语句。基本上,四种不同的场景会根据查询显示不同的按钮

如果活动是免费的,请按一个按钮

但是,如果活动是免费的,但您必须RSVP(如我们的聚会),则显示此按钮

或者,如果有门票,但活动不是免费的,但有折扣,则显示此按钮

否则,如果有票但不是免费的,请显示此按钮

这就是我现在拥有的

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>';
    }
}