试图创建一系列漫长的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>';
}
代码有效。如果我有一个免费的活动,我会得到“此活动是免费的”按钮,但是如果我有一个免费的活动,但又提供门票/ rsvp,我仍然会得到第一个没有链接的免费按钮。第二步应该在这里进行。不是第一个。如果加上价格或“免费”一词以外的任何内容,则可以达成相同交易。
我的订单正确吗?还是代码中的其他内容?
答案 0 :(得分:1)
例如,您应尝试测试密钥是否与“是否等于”分开设置。
if ( isset($additional_fields[ 'Price' ]) && $additional_fields[ 'Price' ] == 'Free' ){
do this
}
由于isset只会返回true或false。
答案 1 :(得分:0)
您似乎对条件顺序和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>';
}
答案 2 :(得分:0)
是的,您将得到第一条陈述,因为您在第一条陈述中已经检查了该陈述
if ( isset($additional_fields[ 'Price' ]) == 'Free' )
所以现在在第一条语句中价格是免费的,因此,当满足if()
时,为什么代码会转到else语句
而且您还使用了isset()
,它的返回值只是布尔值
使用这个
if ( $additional_fields[ 'Price' ] == 'Free' && !isset($additional_fields[ 'Tickets' ])) {
echo "Your button"
} ...
将其用于所有语句
让我知道是否还有任何问题。
希望它对您有帮助
答案 3 :(得分:0)
我建议事先检查并设置变量,以使代码更易于阅读。
$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;
由于您的所有条件都取决于tickets
的设置,因此只需检查开头并排除它即可。
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>';
}
}