我怀疑它是不允许的,因为我收到“Parse error:语法错误,意外的T_IF in ...”错误。但我无法找到实现目标的方法。这是我的代码:
<?php
$countries = $myaddress->get_countries();
foreach($countries as $value){
echo '<option value="'.$value.'"'.if($value=='United States') echo 'selected="selected"';.'>'.$value.'</option>';
}
?>
它的作用是在选择元素中显示国家/地区列表,并将美国设置为默认值。我伤心地工作......
答案 0 :(得分:136)
您将需要使用 一个ternary运算符作为缩短的IF / Else语句:
echo '<option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'>'.$value.'</option>';
答案 1 :(得分:11)
您始终可以使用( <condition> ? <value if true> : <value if false> )
语法(称为ternary operator - ,感谢Mark提醒我:))。
如果<condition>
为真,则该语句将被评估为<value if true>
。如果没有,它将被评估为<value if false>
例如:
$fourteen = 14;
$twelve = 12;
echo "Fourteen is ".($fourteen > $twelve ? "more than" : "not more than")." twelve";
这与:
相同$fourteen = 14;
$twelve = 12;
if($fourteen > 12) {
echo "Fourteen is more than twelve";
}else{
echo "Fourteen is not more than twelve";
}
答案 2 :(得分:8)
echo '<option value="'.$value.'"'.($value=='United States' ? 'selected="selected"' : '').'>'.$value.'</option>';
当你在这里时,你可以使用printf
来使你的代码更具可读性/可管理性:
printf('<option value="%s" %s>%s</option>',
$value,
$value == 'United States' ? 'selected="selected"' : ''
$value);
答案 3 :(得分:7)
为了便于阅读,它应该像
<?php
$countries = $myaddress->get_countries();
foreach($countries as $value) {
$selected ='';
if($value=='United States') $selected ='selected="selected"';
echo '<option value="'.$value.'"'.$selected.'>'.$value.'</option>';
}
?>
人们希望把所有东西都塞进一条线上就是一件坏事。写清楚。
但还有另一种方式,一种更好的方式。根本不需要使用回声。学习使用模板。首先准备数据,然后只显示准备就绪。
业务逻辑部分:
$countries = $myaddress->get_countries();
$selected_country = 1;
模板部分:
<? foreach($countries as $row): ?>
<option value="<?=$row['id']?>"<? if ($row['id']==$current_country):> "selected"><? endif ?>
<?=$row['name']?>
</option>
<? endforeach ?>