2

我经常需要动态选择option一个select组合框,例如优化需要显示先前选择的值的搜索。我通常会通过选项(如果从数据库获取,则在 for 循环中),并检查if statement

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

现在,对每个组合框都这样做很麻烦,而且代码行数更多。有没有更快/更有效的方法来根据给定的值选择选项。例如“$selected选择选项”之类的东西,而不是为每个选项运行 if 语句?

4

3 回答 3

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 真的没有尽头。

于 2013-08-13T13:22:07.513 回答
0

试试喜欢

$selected = 'Option 2';    
foreach ($options as $Value) {
    if($Value != $selected) {
        echo "<option>" . $Value . "</option>";
    } else {
        echo "<option selected>" . $Value . "</option>";
    }
}
于 2013-08-13T13:22:20.607 回答
0

没有 if() 情况!

    $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";
    }
于 2013-08-13T13:41:40.340 回答