如何在发送的selected="selected"
数据的HTML <select>
输入中将$_POST
位添加到选项中,而不在每个选项中使用if语句?
答案 0 :(得分:0)
<?php
$options = array(1 => 'Banana', 2 => 'Apple');
foreach ($options as $key => $value) {
echo '<option value=""';
if ($key == $_POST['fruit']) echo ' selected="selected"';
echo '>'.$value.'</option>';
}
?>
答案 1 :(得分:0)
以编程方式,你可以这样做:
$optionNames = array('This', 'Is', 'A', 'Test');
echo '<select id="testselect" name="testselect">';
foreach($optionNames as $currentOption) {
echo '<option value="'.$currentOption.'"';
echo $_POST['testselect'] == $currentOption ? ' selected="selected"' : '';
echo '>'.$currentOption.'</option>';
}
echo '</select>';
必须承认我目前没有开发盒来测试上面的代码,但应该没问题。 (如果没有道歉。): - )
答案 2 :(得分:0)
我认为对每个选项使用if语句是最有效的。
但是你可以创建一个包含空字符串的数组,除了你想要选择的选项的位置,以便消除if语句。
$options = array(1 => 'Banana', 2 => 'Apple', 3 => 'Orange');
$selected_options = array_fill(1, sizeof($options), "");
if(array_key_exists($_POST['fruit'], $options))
$selected_options[$_POST['fruit']] = " selected=\"selected\"";
echo '<select id="fruit" name="fruit">';
foreach($options as $optionId => $optionText)
echo '<option value="'.$optionId.'"'.$selected_options[$optionId].'>'.$optionText.'</option>';
echo '</select>';