我正在使用下面的代码自动填充下拉列表的选项值。我已经尝试让它选择数字30。现在它正在显示数字30两次不按顺序。我如何让这个序列显示18-75预选30。
<select name="age2" class="numb">
<?php
for ($k = 18; $k <= 75; $k++)
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
echo '<option value=30 selected>30</option>';
?>
</select>
答案 0 :(得分:4)
使用以下代码
<select name="age2" class="numb">
<?php
for ($k = 18; $k <= 75; $k++) {
$selected = '';
if($k == 30){
$selected = 'selected="selected"';
} else {
$selected = '';
}
echo '<option value='.sprintf("%02d", $k).' '.$selected.' >'.sprintf("%02d", $k).'</option>';
}
?>
</select>
答案 1 :(得分:3)
正确的方法是
<select name="age2" class="numb">
<?php
for ($k = 18; $k <= 75; $k++)
{
if($k!=30)
{
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
}
else
{
echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
}
}
?>
</select>
答案 2 :(得分:3)
您只需检查每次迭代中的值,并在值为30时回显。
<select name="age2" class="numb">
<?php
for ($k = 18; $k <= 75; $k++){
$value = sprintf("%02d", $k) ; ?>
<option value='<?php echo $value ; ?>' <?php echo ($value == 30) ? "selected" : "" ; ?>><?php echo $value ; ?></option>
<?php } ?>
</select>
答案 3 :(得分:3)
30不按顺序显示,因此for
循环仅在第一行循环。然后仅在整个循环完成后,即在$k == 75
之后打印30。
如果您以后需要更改数字,我建议您定义$default
值:
<select name="age2" class="numb">
<?php
$default = 30;
for ($k = 18; $k <= 75; $k++) {
if ($k == $default) {
echo '<option value=' . $default . 'selected>' . $default . '</option>';
} else {
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
}
}
?>
</select>
答案 4 :(得分:1)
您在每个循环迭代中添加30
选项,您必须将其置于某种状态
<select name="age2" class="numb">
<?php
for ($k = 18; $k <= 75; $k++) {
if($k ==30)
{
echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
}
else
{
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
}
}
?>
</select>
答案 5 :(得分:1)
<select name="age2" class="numb">
<?php
for ($k = 18; $k <= 75; $k++)
echo '<option value='.sprintf("%02d", $k). (if($k==30)?'selected="selected"':"").'>'.sprintf("%02d", $k).'</option>';
}
?>
</select>