用户可以获得多个选项,将不同的类添加到读入PHP的内容中 -
以下工作原理,但效率非常低,使用了大量代码。有没有办法可以减少它?
<?php
if(get_sub_field('status') == "Upcoming"){
echo '<li class="upcoming">';
}
if(get_sub_field('status') == "Next"){
echo '<li class="next">';
}
if(get_sub_field('status') == "See what happened"){
echo '<li class="happened">';
}
?>
答案 0 :(得分:4)
您可以创建一个包含所需值的表。这种方式消除了所有if语句。请记住,这在功能上等同于上面的代码。
$opt_vals = array(
"Upcoming",
"Next",
"See what happened"
);
$val_to_search = get_sub_field("status");
if(($key = array_search($val_to_search, $opt_vals)) !== FALSE) {
echo '<li class="' . strtolower($val_to_search) . '">';
}
由于array_search
返回带有相应值的键,$key
将保留键,但是当@Timur强调时,相应索引0处的值将评估为FALSE,0,所以为了真正检查它是否具有值,我们必须使用严格的!==
运算符,因为0 == NULL
将评估为true。
答案 1 :(得分:0)
你可以用if ... else来做这件事。
<?php
$status = get_sub_field('status');
if( $status == 'upcoming')
$class = 'upcoming';
else if( $status == 'Next' )
$class = 'next';
else if( $status == 'See what happened')
$class = 'happened';
?>
<li class="<?php echo $class; ?>"></li>
答案 2 :(得分:-1)
你可以改变它的唯一方法是:
echo '<li class="' . get_sub_field('status') . '">';
否则就无法解决这个问题!您必须使用if
和elseif
,或者制作switch
声明
当您希望查看值是否有效时,您可以制作类似白名单的数组:
$valid = array(
"Upcoming",
"Next",
"See what happened"
);
然后你可以这样检查:
if($value = array_search(get_sub_field("status"), $valid))
echo '<li class="' . strtolower($value) . '">';
else
echo '<li class="default">'; //if something fails