HTML动态选择,而不是if语句

时间:2013-08-13 13:10:35

标签: php html select

我经常需要动态选择optionselect组合框,例如优化需要显示以前选定值的搜索。我通常会查看选项(如果从数据库获取,则在for循环中),并使用if statement检查:

$selected = 'Option 2';
foreach ($options as $value) {
    echo '<option ';
    echo ($selected == $value)? 'selected>' : '>';
    echo $value . '</option>';
}

现在,对于每个组合框来说,这都是一件非常麻烦的事情,而且代码行更多。是否有更快/更有效的方法根据给定的值选择选项。例如,选择“Make $selected option”,而不是为每个选项运行if语句?

3 个答案:

答案 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";
    }