我经常需要动态选择option
个select
组合框,例如优化需要显示以前选定值的搜索。我通常会查看选项(如果从数据库获取,则在for循环中),并使用if statement
检查:
$selected = 'Option 2';
foreach ($options as $value) {
echo '<option ';
echo ($selected == $value)? 'selected>' : '>';
echo $value . '</option>';
}
现在,对于每个组合框来说,这都是一件非常麻烦的事情,而且代码行更多。是否有更快/更有效的方法根据给定的值选择选项。例如,选择“Make $selected
option”,而不是为每个选项运行if语句?
答案 0 :(得分:1)
你想要的只是做你正在做的事情,但是可以重复使用的东西。
<?php
$options = array(
'1' => 'Value 1',
'2' => 'Value 2',
'3' => 'Value 3',
'4' => 'Value 4'
);
function generate_html_options($source, $selected = null) {
foreach($source as $value => $string) {
$attribute = $value == $selected ? 'selected="selected"' : '';
echo sprintf('<option value="%s" %s>%s</option>', $value, $attribute, $string);
}
}
?>
<select>
<?php generate_html_options($options, 2); ?>
</select>
如果您正在寻找优雅,那么PHP真的无法完成您的工作。
答案 1 :(得分:0)
尝试
$selected = 'Option 2';
foreach ($options as $Value) {
if($Value != $selected) {
echo "<option>" . $Value . "</option>";
} else {
echo "<option selected>" . $Value . "</option>";
}
}
答案 2 :(得分:0)
否if if()case!
$selected = 'Option 2';
$options = array('Option 1','Option 2','Option 3');
$str = "> ".implode($options,",> ");
$replaced_str = str_replace("> ".$selected, " selected='selected' >".$selected,$str);
$new_options = explode(',',$replaced_str);
foreach ($new_options as $value) {
echo '<option'.$value.'</option>'."\n";
}